ios - 添加状态栏后导航栏未重新定位

标签 ios ios6 uinavigationbar statusbar

我遇到了 iOS6 中似乎出现的导航栏定位问题。
它在很多方面都类似于一些用户在旋转某些 View 时遇到的问题

应用程序有一个启动屏幕,全屏显示(通过将在应用程序启动期间隐藏状态栏设置为True来实现)

然后在我的主视图 Controller 的 viewDidLoad 中,以下行将状态栏添加回应用程序:

[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];

这会将 StatusBar 添加到应用程序,并按预期将 View 向下移动 20pt。 然而,导航栏保持原状,位于状态栏下方,下方有 20 磅的小故障。

The glitch created by adding statusBar

在 iOS6 之前,我曾经通过添加以下代码行来解决此问题:

[UIApplication sharedApplication].keyWindow.frame=CGRectMake(0, 20, 320, [[UIScreen mainScreen] bounds].size.height-20);

但是现在,这不起作用。

一些研究表明,在调用 viewDidLoad 时,keyWindow.frame 的大小和原点均为 {0,0},更改它没有效果.

将上述两行插入到 viewDidAppear 时,应用程序启动时我会得到相同的行为。然而,当我移动到另一个 View 并返回到第一个 View 时,keyWindow.frame 的更改达到了预期的效果,并且导航栏最终定位在应有的位置。

我的问题是:当 StatusBar 最初隐藏时,如何在将 StatusBar 添加到 iOS 应用程序后使 NavigationBar 获得正确的位置?

最佳答案

改为在 viewWillAppear 上调用 setStatusBarHidden:NO。

关于ios - 添加状态栏后导航栏未重新定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14773531/

相关文章:

ios - 四点曲线怎么画

xcode - 没有显示 segue 显示的快速后退按钮

ios - 导航栏中的标题在较小的屏幕上太长;为不同的屏幕尺寸设置字体大小?

iphone - UITableView, numberOfRowsInSection

ios - CKQueryOperation iOS 9仅可插入工作

iphone - 在类似拨号器的 View 中星号太小

iphone - iPad UINavigationController 自定义栏背景图像

jQuery 单击事件在 iPhone 浏览器上不起作用(已经尝试过光标 :pointer;)

ios - 动画按钮的最佳方式是什么?

objective-c - 如何让我的 MPMoviePlayerController 横向播放?