ios 系统状态栏样式修改_iOS 导航栏颜色和状态栏颜色修改

(关于修改顶部状态栏背景以及前景色)

首先,在看文章之前首先要知道 View controller-based status bar appearance这么一个key,在info.plist中进行配置

info.plist

iPhone的状态栏分为前景和背景,前景部分指的是显示电池, 时间等部分; 背景部分指的是白色(图bg1)或者黑色(图bg2)的背景部分

bg1.png

bg2.png

修改前景色

如果 View controller-based status bar appearance 设置为YES, 那么控制器对status bar的设置优先级高于application的设置 ,可以在控制器中通过以下代码进行修改:

- (void)viewDidLoad {

[super viewDidLoad];

[self preferredStatusBarStyle];

//通过改背景色修改状态栏的字体(信号,时间,电池)的颜色

self.view.backgroundColor = [UIColor blackColor];

}

- (UIStatusBarStyle)preferredStatusBarStyle {

return UIStatusBarStyleLightContent;

}

默认的状态栏的StatusBarStyle为UIStatusBarStyleDefault ,也就是黑色;相反的,如果状态栏的StatusBarStyle为UIStatusBarStyleLightContent ,那就是亮色.如果修改StatusBarStyle这个属性,要记得修改背景色不与该颜色相同.否则视图上将看不见状态栏的字体.

2.如果 View controller-based status bar appearance设置为NO,那么application的设置优先级最高. 可以在AppDelegate.m的- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions方法里添加如下代码:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

如果只是在某个页面修改状态栏, 其他页面不修改, 就需要在相应控制器的- (void)viewWillAppear:(BOOL)animated方法里添加, 并且在- (void)viewWillDisappear:(BOOL)animated恢复默认的风格, 代码如下:

- (void)viewWillAppear:(BOOL)animated {

//view出现的时候状态栏前景颜色改为亮色

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

}

- (void)viewWillDisappear:(BOOL)animated{

//view消失的时候状态栏前景颜色改为默认/黑色

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];

}

同上, 要记得修改状态栏背景色不与该颜色相同.否则视图上将看不见状态栏的字体.

修改背景色

1.当View controller-based status bar appearance 设置为YES,控制器才有权限对status的属性进行修改.

2.iOS的状态栏背景色默认是透明的.

在没有导航栏的时候可以自定义一个黑色的,高度为20的View添加到状态栏的位置,代码如下:

UIView *topView = [[UIView alloc] init];

topView.backgroundColor = [UIColor blackColor];

[self.view addSubview:topView];

[topView mas_updateConstraints:^(MASConstraintMaker *make) {

make.top.left.right.equalTo(self.view);

make.height.mas_offset(20);

}];

而且, 前景色会随着背景改变而改变, 无需再次设置.

当有导航栏的时候就需要修改导航栏的背景色继而改变状态栏的背景色,通过设置self.navigationController.navigationBar.barStyle这个属性进行设置:

//黑色

self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

//白色

self.navigationController.navigationBar.barStyle = UIBarStyleDefault;

通过以上方法, 就可以根据自己的需求对状态栏的颜色进行所需要的修改了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值