IOS状态栏样式修改

Categories: IOS

以前的状态栏样式修改很简单:

UIApplication.shared.statusBarStyle = .lightContent 

把这句话写在 AppDelegate 里面就是全局的配置。如果你需要某一个单独的ViewController特殊处理就在这个ViewController里面再写一下这句话就行。

但是IOS9以后就提示这种方式要被废弃了。 新的方式也简单,直接在xcode上选一下就好了: IOS statusBarStyle 如果需要对某一个ViewController特殊处理,在这个ViewController里面复写下面的方法就行:

override var preferredStatusBarStyle: UIStatusBarStyle { 
return UIStatusBarStyle.default 
} 

有个特殊情况,这样写了不生效。就是你这个ViewController是UINavigationController或者UITabBarController的子View。那系统其实是读取了这个UINavigationController或者UITabBarController的preferredStatusBarStyle了,所以你写了这个没有生效,这时候你需要多复写另外两个方法:

// 复写这两个方法 
override var childForStatusBarHidden: UIViewController? { 
return self.navigationController?.topViewController 
} 
override var childForStatusBarStyle: UIViewController? { 
return self.navigationController?.topViewController 
} 

The End !

#Blog