当前位置: 首页 > 工具软件 > Info Bar > 使用案例 >

iOS开发之设置statusbar失效等问题

庾勇军
2023-12-01

在app里我们经常会遇到有的界面状态栏需要是白色,有的需要是黑色的情况。

问题1.info.plist设置了但是vc里修改不掉颜色
应在info.plist加上这么一句,该意思为vc设置的优先级高于info.plist的设置

View controller-based status bar appearance  Bool  YES

问题2.preferredStatusBarStyle无法修改某一单独界面状态栏颜色

- (UIStatusBarStyle)preferredStatusBarStyle {
    
    return UIStatusBarStyleLightContent;
}

比如我有a,b,c三个界面,我需要a和c都显示白色,b显示黑色
因为我是继承于同一个nav,所以直接在nav里设置了这么一句话

    self.navigationBar.barStyle = UIBarStyleBlack;    

b界面里设置了

- (void)viewWillAppear:(BOOL)animated {
    
    [super viewWillAppear:animated];
    
    self.navigationController.navigationBar.barStyle = UIBarStyleDefault;
    
    self.navigationController.navigationBar.hidden = YES;
    
}

- (UIStatusBarStyle)preferredStatusBarStyle {
 
    return UIStatusBarStyleDefault;
}


- (void)viewWillDisappear:(BOOL)animated {

    [super viewWillDisappear:animated];

    self.navigationController.navigationBar.hidden = NO;
}

这样就可以实现我们的需求了,其实重点在于
1.代码设置与info.plist设置的优先级
2.navigationBar.barStyle的类型设置

  // UIBarStyleBlack:当它为black时statusbar颜色为白色
  // UIBarStyleDefault:当它为default时statusbar颜色为黑色
 类似资料: