mark
公司部分界面更换了UI风格,当新旧碰撞,带来的不仅仅是界面的不统一,还有我的手忙脚乱。。。
干货,干货,先看如何单独设置,再说怎么在页面跳转间搞定它。
设置导航栏
设置 导航栏的颜色(其实不建议用此方法,会被系统蒙上一层灰色,造成跟设计要求的不一样):
[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
用 图片做导航栏背景(这样就愉快多了,给它什么图案,就是什么图案):
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"bai_beijing"] forBarMetrics:UIBarMetricsDefault];
设置导航栏 字体颜色:
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor blackColor]}];
看下源文件:
You may specify the font, text color, and shadow properties for the title in the text attributes dictionary, using the keys found in NSAttributedString.h.
如上,你可以设置你喜欢的属性,不只是颜色。以上,对于简单的导航栏设置来说,就够用了。
设置状态栏
接下来,先看看 状态栏颜色:
- UIStatusBarStyleDefault :黑色
- UIStatusBarStyleLightContent :白色
那么,它的 设置方法:
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
这里需要注意的是,如果需要用上面的方法改变状态栏,需要在info.plist中,将View controller-based status bar appearance设为NO。View controller-based status bar appearance 的默认值是YES。如果View controller-based status bar appearance 为 YES 则设置方法 [UIApplication sharedApplication].statusBarStyle ([[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyle];)无效。
修改策略
在要改变的页面- (void)viewWillAppear:(BOOL)animated; 中直接调用修改方法。当返回上一个页面时,如果上一个页面与该页面所显示的状态栏,导航栏不同,那么应该在
[self dismissViewControllerAnimated:YES completion:nil];
或
[self.navigationController popViewControllerAnimated:YES];
的同时调用修改函数。e.g.:
- (void)reSetStatusBarLightContent {
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
[[UINavigationBar appearance]setBackgroundImage:[UIImage imageNamed:@"abovebar_forall"] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];
}
网友评论