导航

更改导航显示样式

920 发布: 2022/6/6 10:00 本文总阅读量

旧版api被废弃

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

新版设置方法

注意:

创建了自定义导航后,就要使用自定义导航,如果还使用UINavigationController以下方法不会生效

  1. info.plist
    Info.plist中View controller-based status bar appearance 设置为 YES
    
  2. 自定义导航栏中添加
    - (UIViewController *)childViewControllerForStatusBarStyle {
     return self.topViewController;
    }
    - (UIViewController *)childViewControllerForStatusBarHidden {
     return self.topViewController;
    }
    - (UIStatusBarStyle)preferredStatusBarStyle {
     return UIStatusBarStyleLightContent;
    }
    
  3. 创建基础控制器,其他控制器继承自它,在基础控制器中设置
    - (void)viewDidAppear:(BOOL)animated{
     [super viewDidAppear:animated];
     [self setNeedsStatusBarAppearanceUpdate];
    }
    - (UIStatusBarStyle)preferredStatusBarStyle {
     return UIStatusBarStyleLightContent;
    }
    
  4. 某个控制器需要改变导航栏样式
    - (UIStatusBarStyle)preferredStatusBarStyle {
     if (@available(iOS 13.0,*)) {
         return UIStatusBarStyleDarkContent;
     }
     return UIStatusBarStyleDefault;
    }