A. View controller-based status bar appearance,字面意思很好理解,默认为NO,通过UIApplication.shared.statusBarStyle = .lightContent来修改statusBarStyle;
B. View controller-based status bar appearance为YES时,通过重写preferredStatusBarStyle修改statusBarStyle,由于preferredStatusBarStyle是只读的,所以如果要根据业务逻辑动态修改statusBarSty le的话需要显式的调用setNeedsStatusBarAppearanceUpdate()方法,让系统再去读取一次更改后的preferredStatusBarStyle;
注意:如果当前viewcontroller是navigationController的childViewController,通过重写preferredStatusBarStyle是不能修改statusBarStyle的,解决办法是要么重写UINavigationController的childForStatusBarStyle和childForStatusBarHidden(当导航栏隐藏时只需重写前者),返回visibleViewController;要么使用方法a。
网友评论