iOS 自定义导航栏(UINavigationBar)和状态栏(UIStatus)颜色

我们在实际项目操作中可能会遇到这样的需求:

  1. 导航栏背景颜色是一张黑色图片(或者直接设为黑色)
  2. 导航栏颜色为白色
  3. 状态栏颜色为亮白色

怎么快速有效的解决呢? 这就是我今天要说的内容。。。

首先看第一个问题

  • 导航栏背景颜色是一张黑色图片

如果直接给导航栏对象设置背景颜色是不行的,需要在 AppDelegate.h中调用[UINavigationBar appearance] setBarTintColor方法来设置,可以直接设置颜色,当然,也可以这样

[[UINavigationBar appearance] setBarTintColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"nav_bar_background"]]];

设置成一张颜色图片。我这里也是黑色的背景图片。效果就是这样的


iOS 自定义导航栏(UINavigationBar)和状态栏(UIStatus)颜色_第1张图片

第二个问题

  • 导航栏字体颜色设置为白色
    类似于上面的方法,需要个导航栏设置TitleTextAttributes属性,完整代码是这样
[[UINavigationBar appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],NSForegroundColorAttributeName, nil ]];

这里需要注意,dictionaryWithObjectsAndKeys:后面跟的是一个字典,在写完颜色属性后,需要跟上一个NSForegroundColorAttributeName,也就是字典里键值对的意思。

此时的效果是这样的


iOS 自定义导航栏(UINavigationBar)和状态栏(UIStatus)颜色_第2张图片

关于导航栏,这样设置基本就OK了,接下来就是目前看着不太和谐的 状态栏 。 字体设置成亮白色,效果就会好很多了。网上也有很多方法介绍,我算是尝试总结了一下把。

第一步:在应用程序配置里这个地方选择light,

iOS 自定义导航栏(UINavigationBar)和状态栏(UIStatus)颜色_第3张图片

第二步:在工程plist文件里新增一个key,View controller-based status bar appearance,后面选择NO.

第三步:Status bar style 这里选择 UIStatusBarStyleLightContent

到这里,基本设置完毕,运行效果是这样的


iOS 自定义导航栏(UINavigationBar)和状态栏(UIStatus)颜色_第4张图片

当然,能力有限,我也只是简单列举了一种设置方法,以后自己感觉能有其他更好的方法替代的时候,再来添加吧。

你可能感兴趣的:(iOS 自定义导航栏(UINavigationBar)和状态栏(UIStatus)颜色)