有三种可以修改状态栏颜色的方法,以下一一介绍。
方法一:
先修改info.plist属性,再在需要的地方调用代码。注意每次调用该代码都是全局改变的,所有界面的状态栏颜色统一改变。
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
优点:一次设置,全局改变。跳转到其他界面的时候也不用再次设置。
缺点:一个是一定要注意,这种方式是全局改变的;然后是设置了info.plist的属性后,方法二和三都将失效。
方法二:
使用UIViewController或者UINavigationController自带的方法——-(UIStatusBarStyle)preferredStatusBarStyle。
- (UIStatusBarStyle)preferredStatusBarStyle{
return UIStatusBarStyleDefault;
}
使用用这个方法要注意两个点,第一个点就是info.plist中如果添加了View controller-based status bar appearance,那要将值设为YES,不然方法无效;第二点就是,uiviewcontroller虽然也有preferredStatusBarStyle方法,但是在uinavigationcontroller下是不起作用的。系统会优先调用uinavigationcontroller的preferredStatusBarStyle方法,除非navigationbar是隐藏状态的。
方法三:
改变navigationBar的barstyle。
self.navigationController.navigationBar.barStyle = UIBarStyleBlack;
需要注意的是,使用这种方法改变状态栏的颜色,会同时改变导航栏的颜色。这个问题可以通过设置导航栏背景图去避免;还有一个问题是,在uinavigationcontroller中重写了preferredStatusBarStyle方法的话,会使这个方法失效。
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self.navigationController.navigationBar setBackgroundImage:[self GetImageWithColor:[UIColor greenColor] andHeight:64] forBarMetrics:UIBarMetricsDefault];
}
以上就是改变状态栏文字颜色的一些总结,希望对大家有帮助。喜欢的点个赞~