【发布时间】:2013-09-27 17:09:43
【问题描述】:
最终编辑
(而不是有一个过长的问题需要进行最终编辑以进行澄清,如果需要,请查看其他编辑)。
控制器设置
我有一个设置如下的应用程序:
InitialViewController(ECSlidingViewController 的子类)
主导航控制器(UINavigationController 的子类)
主主视图控制器(UIViewController 的子类)
在 initialViewController 的 viewDidLoad 中,我将主导航控制器加载到主视图控制器作为其根。
self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainNavVC"];
问题
在第一次加载应用程序时,状态栏和导航栏是分开的。
这是想要的效果。
不过,我随后会使用标准方法加载一个模态视图控制器并关闭它:
[self performSegueWithIdentifier:@"LoadSelectOpponentVC" sender:self];
然后关闭:
[self dismissViewControllerAnimated:YES completion:nil];
这反过来会导致主导航控制器(持有主视图控制器)不正确地显示状态栏并重叠:
测试
- plist 设置设置为 YES -
View controller-based status bar appearance - 我已尝试将
edgesForExtendedLayout设置为相关的无,但没有更改。
记录
我已尝试注销一些框架以查看问题所在:
首次加载时:
主导航 VC - 视图框架 - {{0, 0}, {320, 480}}
Main Nav VC - Nav Bar Frame - {{0, 0}, {320, 44}}
Initial VC - View Frame - {{0, 0}, {320, 480}}
Home VC - View Frame - {{0, 0}, {320, 480}} -- viewDidLoad Home VC
Home VC - View Frame - {{0, 64}, {320, 416}} -- viewWillAppear Home VC
--- After Modal is opened/closed ----
Home VC - View Frame - {{0, 64}, {320, 416}} -- viewWillAppear Home VC
Main Nav VC - View Frame - {{0, 0}, {320, 480}} -- viewWillAppear Main Nav
Main Nav VC - Nav Bar Frame - {{0, 20}, {320, 44}} -- viewWillAppear Main Nav
Home VC - View Frame - {{0, 44}, {320, 436}} -- viewDidAppear Home VC
【问题讨论】:
-
“在顶部栏下扩展”只会影响您的视图与导航栏的关系。
-
您是否尝试过将导航栏的框架向下移动到状态栏的高度?
-
这应该在哪里完成呢?你能提供一个答案吗?
-
这里有同样的问题...正在寻找解决方案。
-
您找到解决方案了吗?对我来说同样的问题,当我为第一个控制器打印导航栏框架时,它会打印 (x,y)->(0,20),然后当我推动视图控制器时,它会打印 (x,y)->(0,0)。怎么变成0了?
标签: ios7 uinavigationcontroller uinavigationbar uistatusbar