【iOS开发】全局设定 UINavigationBar 的 UI

App Screen Shot.png

如图,是个很简明的 UITabBarController 分出3个 UINavigationController,每个 UINavigationController 再跟一个 UITableViewController 的结构。
TabBar 和 NavigationBar 都是以浅海蓝色为背景,文字和按钮为白色的设计。
因为 TabBar 只有一个,直接在 UITabBarController 的代码里写下面这段就可以
(globalBarTintColor是我自定义的浅海蓝色,后面还会出现)

    self.tabBar.tintColor = UIColor.whiteColor()
    self.tabBar.barTintColor = globalBarTintColor

然而 NavigationBar 有三个,甚至还会更多,一个个分别去设定颜色显然耦合性不够低,改起来也很麻烦。
下面给出一种全局统一设定的方法,写在 AppDelegate 文件的 didFinishLaunchingWithOptions 方法里:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
    // NavigationBar 颜色,全局设定
    UINavigationBar.appearance().tintColor = UIColor.whiteColor()
    UINavigationBar.appearance().titleTextAttributes =
        [NSForegroundColorAttributeName:UIColor.whiteColor()]
    UINavigationBar.appearance().barTintColor = globalBarTintColor
    
    return true
}
App Screen Shot2.png

这样做的另外一个好处是,可以直接改掉上图圈出来的 NavigationBar 自带按钮的颜色,如果你直接尝试在某个 ViewController 里写

    self.navigationController!.navigationBar.tintColor = UIColor.whiteColor()

这个按钮的颜色貌似是改不掉的(据我刚刚尝试,是这样的)。

最后:
可以看出,上面的写法,直接是在设定 UINavigationBar 这个类的属性,所以依此类推,其他各种UI效果应该都可以这样全局设定。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • { 11、核心动画 需要签协议,但是系统帮签好 一、CABasicAnimation 1、创建基础动画对象 CAB...
    CYC666阅读 5,506评论 2 4
  • 纤月黄昏院,轻晕人醉浅。 笼花娇欲泣,忆久只自怜。 青丝待霜白,红妆换旧颜。 玉枕泪痕泫,情深无由怨。
    时影书阅读 2,118评论 0 6
  • 又是一年高考,原来我们真的分别了一年,一年中,我浑浑噩噩,完全忘记了时间,要不是高考的影响力太大,或许我完全不知道...
    寄逸阅读 1,769评论 0 1
  • 爱过漫漫黄沙的大漠,爱过湛蓝的海洋,这一次,又会爱上什么? 科比说过,我见过凌晨四点的洛杉矶的样子。突然想到这句,...
    彭彭丁满历险记的丁满阅读 3,077评论 0 2

友情链接更多精彩内容