【发布时间】:2013-09-30 16:43:25
【问题描述】:
iOS 7 Transition Guide 提供了一个很好的提示,如何在 UIViewController 中使用动态更改 UIStatusBarStyle
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleDefault;
}
与[self setNeedsStatusBarAppearanceUpdate];一起
这在单视图应用程序中运行良好。但是,我现在正尝试将模式视图中的UIStatusBarStyle 更改为UIStatusBarStyleLightContent。有一个MainViewController 与ModalViewController 相连,而ModalViewController 本身嵌入在NavigationController 中。 ModalViewController 已将其委托设置为 MainViewController。
我尝试在ModalViewController 中调用[self setNeedsStatusBarAppearanceUpdate]; 以及该类中的以下方法,但没有效果:
// In ModalViewController.m
- (UIStatusBarStyle)preferredStatusBarStyle {
return UIStatusBarStyleLightContent;
}
我还尝试使用- (UIStatusBarStyle)preferredStatusBarStyle {} 中的条件在prepareForSegue: sender: 方法上的MainViewController 中调用[self setNeedsStatusBarAppearanceUpdate];,以便在显示模式视图时返回UIStatusBarStyleLightContent - 但这也没有效果。
如何在模态视图中更改 UIStatusBarStyle?
编辑: 更新后:我需要提到ModalViewController 嵌入在NavigationController 和NavigationBar 中。将NavigationBar 设置为隐藏到[self setNeedsStatusBarAppearanceUpdate]; 在ModalViewController 中的上述调用可以正常工作。但不是在 Bar 可见时。
【问题讨论】:
-
您在 ModalViewController 实现中调用 [self setNeedsStatusBarAppearanceUpdate] 的位置是什么?
-
在
viewDidLoad方法中 -
-viewWillAppear:呢? -
不适用于
viewWillAppear,也不适用于viewDidAppear -
我意识到问题出在 NavigationBar(请参阅编辑)。 ModalViewController 中没有导航栏 [self setNeedsStatusBarAppearanceUpdate] 有效
标签: ios ios7 modalviewcontroller statusbar