【问题标题】:How to change Status Bar text color in iOS 8 embeded with UInavigationController?如何更改嵌入 UInavigationController 的 iOS 8 中的状态栏文本颜色?
【发布时间】:2015-03-05 12:34:23
【问题描述】:
iOS8.1(xcode 6.1)
我使用以下方法更改状态栏文本颜色。
[self setNeedsStatusBarAppearanceUpdate];
-(UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleLightContent; }
点击链接preferredStatusBarStyle isn't called
但这对我不起作用。任何人都知道如何更改与 uinavigationcontroller 相关的状态栏颜色。
【问题讨论】:
标签:
objective-c
ios8
uinavigationcontroller
xcode6
ios7-statusbar
【解决方案1】:
- 在 info.plist 中将
UIViewControllerBasedStatusBarAppearance 设置为 YES
- 覆盖导航控制器中的
- (UIViewController *)childViewControllerForStatusBarStyle。归还你的孩子VC
- 覆盖
preferredStatusBarStyle 或需要的东西。
代码:
- (UIStatusBarStyle)preferredStatusBarStyle{
return self.test?UIStatusBarStyleLightContent:UIStatusBarStyleDefault;
}
- (IBAction)test:(id)sender {
self.test = !self.test;
[self setNeedsStatusBarAppearanceUpdate];
}
如果它不起作用,请告诉我。
【解决方案2】:
您可以通过将包含您的设置的 NSDictionary 分配给 titleTextAttributes 属性来自定义 UINavigationControllers 上的标题文本样式。
NSDictionary *titleTextAttributes = [NSDictionary dictionaryWithObjectsAndKeys:
[UIColor whiteColor], NSForegroundColorAttributeName, nil];
[[UINavigationBar appearance] setTitleTextAttributes:titleTextAttributes];
更多堆栈溢出讨论here,以及苹果参考here。