iOS状态栏颜色修改

本文直接开干性,需要知道的原理的很多文章都写的很详细,自行搜索。

一、iOS9 以前只需要设置

step1.修改plist文件View controller-based status bar appearance = NO


iOS状态栏颜色修改_第1张图片
iso9.png

step2.

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

二、iOS9 以后,苹果废弃了以上方法,改用- (UIStatusBarStyle)preferredStatusBarStyle

step1.修改plist文件View controller-based status bar appearance = YES
step2.在需要修改的VC里面,直接调用preferredStatusBarStyle

-(UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleLightContent;
}

三、如果需要全局设置

step1.修改plist文件View controller-based status bar appearance = YES
step2.搞一个baseVC,调用preferredStatusBarStyle,全局的状态都改了,其他VC继承不继承baseVC都没有关系。

****注意:-->由此可得出,
1>只要在一个vc里面调用了preferredStatusBarStyle,那所有的vc都改了,
2>最先显示到windon上的vc调用了preferredStatusBarStyle,如果返回了白色,那其他的vc就算调用也不会改变,还是白色。

四、大部分状态栏颜色一致,部分不一样的设置

step1.修改plist文件View controller-based status bar appearance = YES
setp2.在最先显示到windon上的vc上调用preferredStatusBarStyle,或者是baseVC,返回需要的颜色。

-(UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleLightContent;
}

setp3.注意这里是关键,每个项目都有自己的自定义UINavigationController类,或者分类;在导航类里面调用:

- (UIViewController *)childViewControllerForStatusBarStyle{
    return  self.visibleViewController;
}
- (UIViewController *)childViewControllerForStatusBarHidden{
    return self.visibleViewController;
}

setp4.在需要不一样的vc里面再调用preferredStatusBarStyle返回需要的状态栏颜色

-(UIStatusBarStyle)preferredStatusBarStyle{
    return UIStatusBarStyleDefault;
}

你可能感兴趣的:(iOS状态栏颜色修改)