ios

iOS 状态栏前景颜色

2018-04-26  本文已影响190人  钦川

相关的理论知识

状态栏前景颜色种类
状态栏前景颜色设置的地方有两个:plist设置 和 代码设置

1.plist里面设置:

1.Targets=>General=>Deployment Info 
     这里可以设置启动图的状态栏是否显示及其颜色
2.Targets=>Info=>View controller-based status bar appearance
  YES,
  则控制器对状态栏设置的优先级高于 
  [[UIApplication sharedApplication] setStatusBarStyle:<#UIStatusBarStyle#>];
  NO,
  则以 [[UIApplication sharedApplication] setStatusBarStyle:<#UIStatusBarStyle#>]; 
  为准

2.代码设置
UIViewController有四个相关的函数

- (UIStatusBarStyle)preferredStatusBarStyle;
- (BOOL)prefersStatusBarHidden;
- (void)setNeedsStatusBarAppearanceUpdate;
- (UIViewController *)childViewControllerForStatusBarStyle;
- (UIViewController *)childViewControllerForStatusBarStyle{
     return self.topViewController;
}

意思是,不要调用UINavigationController的preferredStatusBarStyle方法,而是去调用navigationController.topViewController的preferredStatusBarStyle方法,这样就能让当前显示的UIViewController的preferredStatusBarStyle方法能影响statusBar的样式

我的实践

  1. 设置启动页状态栏

    Targets=>General=>Deployment Info 在这里设置状态栏是否显示及其样式
    
  2. 设置控制器优先于Application

    Targets=>Info=>View controller-based status bar appearance 设置为YES
    
  3. 让当前显示的UIViewController能控制状态栏的样式

    BaseNavigationController 继承自 UINavigationController,
    重写childViewControllerForStatusBarStyle方法,如下:
    
    - (UIViewController *)childViewControllerForStatusBarStyle {
          return self.topViewController;
    }
    
  4. 在BaseViewController里面设置该App的主题状态栏样式

    - (UIStatusBarStyle)preferredStatusBarStyle {
       return <#UIStatusBarStyle#>;
    }
    
上一篇下一篇

猜你喜欢

热点阅读