Swift - iOS : Change the color of a Navigation Bar

2019-01-31 00:07发布

I'm trying to change the color of my navigator bar but I found that it's only impossible if the navigator is the root one.

I'm trying this:

self.navigationController?.navigationBar.translucent = true

self.navigationController!.navigationBar.barTintColor = UIColor.blueColor()

All my Viewcontrollers are related to navigator controllers. However nothing is changed. In fact I tried to make the same things from storyboard but it works only if I'm in the first navigator.

I tried to read everything related to this problem but found nothing

I could add any item to the navigator bar like this

let HomeImage = UIImage(named: "home")!
    let Home : UIBarButtonItem = UIBarButtonItem(image: HomeImage,  style: .Plain, target: self, action: "home:")
    navigationItem.rightBarButtonItem = Home

9条回答
Root(大扎)
2楼-- · 2019-01-31 00:57

For black nav bar try this:

navigationController?.navigationBar.barStyle = .black
查看更多
做自己的国王
3楼-- · 2019-01-31 01:02
self.navigationController?.navigationBar.barTintColor = UIColor.gray
查看更多
手持菜刀,她持情操
4楼-- · 2019-01-31 01:04

In fact, i found that the solution was to use in the AppDelegate.siwft :

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    UINavigationBar.appearance().barTintColor = UIColor(red: 0, green: 0/255, blue: 205/255, alpha: 1)
    UINavigationBar.appearance().tintColor = UIColor.whiteColor()
    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName:UIColor.whiteColor()]

    return true
}

and then in each view controller, that we need another background color or something else

  1. the segue should be different than "show"

  2. use the func viewWillAppear

     override func viewWillAppear(animated: Bool) {
         super.viewWillAppear(animated)
         self.navigationController?.navigationBar.barTintColor = UIColor.whiteColor()
         self.navigationController?.navigationBar.tintColor = UIColor.blueColor()
         self.navigationController!.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.blueColor()]
    }
    
查看更多
登录 后发表回答