我遇到了 iOS6 中似乎出现的导航栏定位问题。
它在很多方面都类似于一些用户在旋转某些 View 时遇到的问题
应用程序有一个启动屏幕,全屏显示(通过将在应用程序启动期间隐藏状态栏
设置为True
来实现)
然后在我的主视图 Controller 的 viewDidLoad
中,以下行将状态栏添加回应用程序:
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone];
这会将 StatusBar 添加到应用程序,并按预期将 View 向下移动 20pt。 然而,导航栏保持原状,位于状态栏下方,下方有 20 磅的小故障。
在 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/