美文网首页UIKit
UIKit - UIStatusBar

UIKit - UIStatusBar

作者: ienos | 来源:发表于2020-04-20 00:44 被阅读0次

状态栏隐藏

e1df0a28-6fa5-46b5-992c-39927dc83feb.png

上图中和 Plist 文件中两个设置等效
Status bar is initially hidden(默认 NO)
Status bar style 字体颜色 (LightContent 白色、Default 黑色字体)
都是刚进入 App 时进入 LunchScreen 时的状态栏的设置

Application 设置:[UIApplication sharedApplication].statusBarHidden = YES;
View Controller 设置 :

- (BOOL)prefersStatusBarHidden{
   return YES;
}

字体样式

Application 设置:[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
View Controller 设置:

- (UIStatusBarStyle)preferredStatusBarStyle {
  return UIStatusBarStyleLightContent;
}

在界面中不时改变样式,需要调用 setNeedsStatusBarAppearanceUpdate 方法,让它去调用 preferredStatusBarStyle

当 View Controller 在 Navigation Controller 中时,只会调用 Navigation Controller 的 preferredStatusStyle,不会调用 View Controller 的方法。
解决方法:
第一种:设置导航栏颜色 同时设置状态栏字体颜色

(1)self.navigationController.navigationBar.barStyle = UIBarStyleBlack; //(字体白色)
(2)self.navigationController.navigationBar.barStyle = UIBarStyleDefalut; //(字体黑色)

第二种:自定义一个 Navigation Controller 的子类,重写方法

- (UIViewController *)childViewControllerForStatusBarStyle {
    return self.topViewController;
}

View controller-based status bar appearance (默认 YES)(状态栏是否隐藏和字体样式)
YES :View controller 优先级大于 Applicaiton
NO :以 Application 的设置为准,viewController 的 prefersStatusBarHidden 方法不会调用

背景颜色

第一种:NavigationBar 的 setBarTintColor 改变导航栏和状态栏的颜色
第二种:NavigationBar 的 setBackgroundImage:forBarMetrics 改变导航栏和状态栏的背景图

setBackgroundImage:forBarMetrics 的优先级比 setTintColor 高。

第三种:创建一个自定义 View,frame 为 CGRectMake(0,0,kScreenWidth,20),添加在 NavigationBar 上并修改希望的颜色

相关文章

网友评论

    本文标题:UIKit - UIStatusBar

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