【发布时间】:2014-05-28 15:08:43
【问题描述】:
首先,我的应用设置:
应用程序的大多数视图控制器都存在于您的标准导航控制器层次结构中,但我在主应用程序窗口上还有第二个窗口,它承载一个视图控制器 (NotificationVC)。如果NotificationVC 正在呈现通知,它将更改状态栏样式以与通知形成对比,否则它将样式推迟到主窗口的根视图控制器。
我的问题是主窗口中的更改通常会触发状态栏外观更新(推送、弹出或呈现视图控制器,或调用-[UIViewController setNeedsStatusBarAppearanceUpdate])没有效果。
这是来自NotificationVC的相关代码:
@implementation NotificationVC
- (UIStatusBarStyle)preferredStatusBarStyle
{
if (self.isShowingNotification)
{
if (self.notificationView.hasDarkBackground)
{
return UIStatusBarStyleLightContent;
}
else
{
return UIStatusBarStyleDefault;
}
}
else
{
return [[UIApplication sharedApplication].delegate window].rootViewController.preferredStatusBarStyle;
}
}
@end
如何从主窗口中的视图控制器之一更新状态栏?
注意:手动设置状态栏外观 (-[UIApplication setStatusBarStyle:]) 不是此应用可接受的解决方案。
【问题讨论】:
-
除了 swizzling 还有其他解决方案吗?
标签: ios uiviewcontroller uiwindow uistatusbar