美文网首页移动端开发IOS知识积累
关于iOS状态栏的问题。

关于iOS状态栏的问题。

作者: Nulll | 来源:发表于2019-02-20 16:50 被阅读8次

说说iOS状态栏的问题。。

有个关键字非常重要

/// 就是这个。。
UIViewControllerBasedStatusBarAppearance

今天遇到来想修改状态栏的颜色,从VC1 push 到 VC2,想修改状态栏的颜色

[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

发现不得行。然后又去info里面强制修改为


屏幕快照 2019-02-20 下午5.00.52.png

还是不得行。。。
就连隐藏都不得行。。

修改iOS状态栏的颜色

第一种方法,全局控制,UIApplication。

/// 如果要使用UIApplication 全局控制的话,就需要在info 里面加上 UIViewControllerBasedStatusBarAppearance 这个关键字,并且设置为NO,这样才可以使用,如下图:
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
info 下面设置:UIViewControllerBasedStatusBarAppearance 关键字

第二种方法,使用ViewController下面的方法prefersStatusBarHidden。 和preferredStatusBarStyle 方法。这个方法需要修改 info.plist 下面 UIViewControllerBasedStatusBarAppearance 关键字为 true

- (BOOL)prefersStatusBarHidden { 
    return NO;
}
- (UIStatusBarStyle)preferredStatusBarStyle { 
    return UIStatusBarStyleLightContent;
}

这种方法再遇到父子控制器的时候需要特殊处理。。
主要是Tab控制器和导航栏控制器,需要父控制器去获取子控制器的状态。。

// UITabBarController
- (UIStatusBarStyle)preferredStatusBarStyle { 
    return  [self.selectedViewController preferredStatusBarStyle]; 
}
- (BOOL)prefersStatusBarHidden { 
    return  [self.selectedViewController prefersStatusBarHidden];
}

// UINavigationController
- (UIStatusBarStyle)preferredStatusBarStyle { 
    return [self.visibleViewController preferredStatusBarStyle];
}
- (BOOL)prefersStatusBarHidden { 
    return  [self.visibleViewController prefersStatusBarHidden];
}

相关文章

网友评论

    本文标题:关于iOS状态栏的问题。

    本文链接:https://www.haomeiwen.com/subject/jwihyqtx.html