我想通过按下按钮将状态栏的颜色从白色更改为黑色, 仅在单个 ViewController 中以编程方式
这是代码:
- (UIStatusBarStyle)preferredStatusBarStyle {
NSLog(@"PreferredStatusBarStyle");
if(nav_bar.alpha==1)
{
NSLog(@"->UIStatusBarStyleBlackOpaque");
return UIStatusBarStyleBlackOpaque;
}
else
{
NSLog(@"->UIStatusBarStyleLightContent");
return UIStatusBarStyleLightContent;
}}
然后当我按下按钮时, Action 是:
[self setNeedsStatusBarAppearanceUpdate];
但是 这不起作用!
当我按下按钮日志时,根据 navbar.alpha 写入正确的状态,但状态栏文本颜色保持 UIStatusBarStyleBlackOpaque 就像 View 出现时一样。
最佳答案
setStatusBarStyle:animated:
已被弃用。在 iOS9 中,您可以使用 preferredStatusBarStyle
和 setNeedsStatusBarAppearanceUpdate
实现相同的目的。
在您的 View Controller 中:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
if (condition) {
return .LightContent
}
return .Default
}
然后当您的病情发生变化时:
self.setNeedsStatusBarAppearanceUpdate()