最终编辑
(不要有一个过长的问题,需要进行最终编辑以进行澄清,如果需要,请参阅其他编辑)。
控制器设置
我有一个设置如下的应用程序:
InitialViewController(ECSlidingViewController 的子类)
主导航控制器(的子类UINavigationController
)
主主视图控制器(的子类UIViewController
)
在viewDidLoad
initialViewController 中,我将主导航控制器加载到主视图控制器作为其根。
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