美文网首页iOS开发iOS 艾欧艾斯程序员
【iOS开发】全局设定 UINavigationBar 的 UI

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

作者: KyXu | 来源:发表于2015-11-14 00:02 被阅读1681次
    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效果应该都可以这样全局设定。

    相关文章

      网友评论

      • aaad567e6daa:我觉得还是继承一下好,在继承的navigationcontroller里面的initialize方法中设定主题颜色,这种代码写在didfinished里面,感觉不太那么:stuck_out_tongue_winking_eye:
        KyXu:@FSAnonymous 嗯,对
      • 阿拉斯加的狗:大牛哥 来点oc的呀 看了半天发现是swift的
        KyXu:@阿拉斯加的狗 不要被语言困扰啊 这是iOS开发里最不重要的事情之一

      本文标题:【iOS开发】全局设定 UINavigationBar 的 UI

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