我有一个导航栏定位问题,似乎在 iOS6 中出现。
它在许多方面的行为类似于一些用户在旋转某些视图时遇到的问题
该应用程序有一个启动画面,全屏显示(通过设置Hide statusbar during application launch
为True
)
然后在viewDidLoad
我的主视图控制器中,以下行将状态栏添加回应用程序:
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
这会将 StatusBar 添加到应用程序中,并按预期将视图向下移动 20pt。但是,NavigationBar 保持在 StatusBar 下方,下方有 20pt 的故障。
在 iOS6 之前,我曾经通过添加以下代码行来解决此问题:
[UIApplication sharedApplication].keyWindow.frame=CGRectMake(0, 20, 320, [[UIScreen mainScreen] bounds].size.height-20);
但是,现在这不起作用。
一些研究表明,在调用 时viewDidLoad
,keyWindow.frame
大小和原点都是 {0,0},更改它没有效果。
将上面提到的两行插入到viewDidAppear
应用程序启动时,我得到了相同的行为。然而,当我移动到另一个视图并返回到第一个视图时,更改keyWindow.frame
具有所需的效果,并且 NavigationBar 最终定位在它应该在的位置。
然后我的问题是:当 StatusBar 最初隐藏时,如何在将 StatusBar 添加到 iOS 应用程序后使 NavigationBar 获得正确的位置?