iOS 7导航栏在viewDidAppear上跳跃/拉伸

Posted

技术标签:

【中文标题】iOS 7导航栏在viewDidAppear上跳跃/拉伸【英文标题】:iOS 7 navigation bar jumping / stretching upon viewDidAppear 【发布时间】:2013-10-04 22:14:09 【问题描述】:

我正在尝试为 ios 7 更新我的应用程序。当我的视图出现在屏幕上时,您可以看到导航栏与屏幕的其余部分之间存在间隙,然后导航栏“跳跃”或“延伸”以填补空白。这导致我的自定义 UIBarButtonItems 从导航栏上掉下来。我试图拍摄过渡的照片,但它发生在相机可以拍照之前。但是,我附上了按钮发生的情况的图片。感谢您的任何建议。请让我知道是否有任何代码有帮助。

【问题讨论】:

您是否已将该按钮指定为 UINavigationBar 的左上角按钮? 我更改了按钮在屏幕上的显示方式,因此它现在粘在导航栏上。我使用了一个自定义按钮,然后使用该按钮在 UIBarButtonItem 初始化。然后我将导航栏上的 leftBarButtonItem 设置为 UIBarButtonItem。我仍然希望了解为什么在视图出现时导航栏似乎会跳跃/拉伸。 你能贴出你做这个的代码吗? 【参考方案1】:

您好,ios 7 导航栏出现问题,导航栏出现在视图上方或显示导航栏和视图之间的间隙,您可以借助以下代码解决此问题

iOS 7 中引入了一个新属性,可让您像以前的 iOS 版本一样调整布局行为。这段代码在你的视图控制器中,你应该很好导航栏占用的空间应该自动考虑

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
    self.edgesForExtendedLayout = UIRectEdgeNone;

谢谢

【讨论】:

我尝试过使用这样的调用,但这似乎并不能解决问题。当呈现模态视图控制器时,问题仍然存在。我使用这段代码来解决这个问题:listVC.edgesForExtendedLayout = UIRectEdgeNone; listVC.automaticallyAdjustsScrollViewInsets = NO;【参考方案2】:

我找到了发生这种情况的原因。在这个预先存在的 SO 答案中得到了回答:iOS7 UIModalTransitionStyleFlipHorizontal bounces after transition。这个概念是我将模态转换样式设置为水平翻转,显然这在 iOS 7 中无法正常工作。

【讨论】:

以上是关于iOS 7导航栏在viewDidAppear上跳跃/拉伸的主要内容,如果未能解决你的问题,请参考以下文章

React Native 标题/底部标签栏在第一个应用程序加载时跳跃

在 iOS 7 中,导航栏在运行时不可见

如何使用导航栏在模态视图中更改iOS 7中的UIStatusBarStyle?

导航栏在iOS 9.2中显示错误的导航项

在 iOS 11 上,导航项中的搜索栏在导航弹出时折叠并卡在状态栏下

iOS 11 中的 SafeArea:如何在没有安全区域的情况下使用自定义导航栏在主屏幕上添加来自 Objective-c 代码的视图