首页 文章

iOS 8中的NavigationBar栏,色调和 Headers 文本颜色

提问于
浏览
142

状态栏中的背景文本仍为黑色 . 如何将颜色更改为白色?

// io8, swift, Xcode 6.0.1 
override func viewDidLoad() {
    super.viewDidLoad()
    self.navigationController?.navigationBar.barTintColor = UIColor.blackColor()
    self.navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orangeColor()]

}

enter image description here

13 回答

  • 78

    AppDelegate.swift 中,在 application(_:didFinishLaunchingWithOptions:) 中我提出以下内容:

    UINavigationBar.appearance().barTintColor = UIColor(red: 234.0/255.0, green: 46.0/255.0, blue: 73.0/255.0, alpha: 1.0)
    UINavigationBar.appearance().tintColor = UIColor.white
    UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white]
    

    对于 titleTextAttributesdocs说:

    您可以在文本属性字典中为 Headers 指定字体,文本颜色,文本阴影颜色和文本阴影偏移

  • 7

    我喜欢亚历克斯的回答 . 如果你想快速尝试一下 ViewController 确保你使用

    viewWillAppear()
    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        var nav = self.navigationController?.navigationBar
        nav?.barStyle = UIBarStyle.Black
        nav?.tintColor = UIColor.white
        nav?.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.orange]
    }
    

    enter image description here

  • 256

    要普遍改变颜色,此代码应位于 NavigationControllerviewDidLoad 函数中:

    class NavigationController: UINavigationController, UIViewControllerTransitioningDelegate {
    
        override func viewDidLoad() {
            super.viewDidLoad()
    
            // Status bar white font
            self.navigationBar.barStyle = UIBarStyle.Black
            self.navigationBar.tintColor = UIColor.whiteColor()
        }
    }
    

    要根据 ViewController 进行更改,您必须从 ViewController 引用 NavigationController 并在 ViewControllerviewWillAppear 函数中写入类似的行 .

  • 25

    //在Swift 4中

    self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
    
  • 16

    要在 objective-c 中工作,我必须在 viewWillAppear 中将以下行放在我的CustomViewController中 .

    [self.navigationController.navigationBar setBarTintColor:[UIColor whiteColor]];
    [self.navigationController.navigationBar setTranslucent:NO];
    

    对于 Swift2.x 这适用:

    self.navigationController?.navigationBar.barTintColor = UIColor.redColor()
    

    对于 Swift3.x ,这有效:

    self.navigationController?.navigationBar.barTintColor = UIColor.red
    
  • 5

    To do this job in storyboard (Interface Builder Inspector)

    IBDesignable 的帮助下,我们可以为Interface Builder Inspector添加更多选项 UINavigationController 并在故事板上调整它们 . 首先,将以下代码添加到项目中 .

    @IBDesignable extension UINavigationController {
        @IBInspectable var barTintColor: UIColor? {
            set {
                navigationBar.barTintColor = newValue
            }
            get {
                guard  let color = navigationBar.barTintColor else { return nil }
                return color
            }
        }
    
        @IBInspectable var tintColor: UIColor? {
            set {
                navigationBar.tintColor = newValue
            }
            get {
                guard  let color = navigationBar.tintColor else { return nil }
                return color
            }
        }
    
        @IBInspectable var titleColor: UIColor? {
            set {
                guard let color = newValue else { return }
                navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: color]
            }
            get {
                return navigationBar.titleTextAttributes?["NSForegroundColorAttributeName"] as? UIColor
            }
        }
    }
    

    然后只需在storyboard上设置UINavigationController的属性 .

    enter image description here

  • 1

    如果要为整个应用程序设置色调颜色和条形颜色,可以将以下代码添加到AppDelegate.swift中

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
            // Override point for customization after application launch.
    
        var navigationBarAppearace = UINavigationBar.appearance()
    
        navigationBarAppearace.tintColor = UIColor(red:1.00, green:1.00, blue:1.00, alpha:1.0)
        navigationBarAppearace.barTintColor = UIColor(red:0.76, green:0.40, blue:0.40, alpha:1.0)
        navigationBarAppearace.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
        return true
    `
    

    Navigation barTintColor and tintColor is set

  • 1

    更新了swift 4

    override func viewDidLoad() {
        super.viewDidLoad()
            self.navigationController?.navigationBar.tintColor = UIColor.blue
            self.navigationController?.navigationBar.barStyle = UIBarStyle.black
    }
    
  • 2

    在Swift 4.1和Xcode 9.4.1中

    self.navigationItem.title = "your name"
    let textAttributes = [NSAttributedStringKey.foregroundColor:UIColor.white]
    navigationController?.navigationBar.titleTextAttributes = textAttributes
    
  • 3

    斯威夫特4

    override func viewDidLoad() {
        super.viewDidLoad()
    
        navigationController?.navigationBar.barTintColor = UIColor.orange
        navigationController?.navigationBar.tintColor = UIColor.white
        navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
    }
    
  • 10

    Swift 4.1

    将一个func添加到viewDidLoad

    override func viewDidLoad() {
      super.viewDidLoad()
    
      setup()
    }
    

    setup() 函数中添加:

    func setup() {
    
            navigationController?.navigationBar.prefersLargeTitles = true
            navigationController?.navigationBar.barStyle = .blackOpaque
            navigationItem.title = "YOUR_TITLE_HERE"
            navigationController?.navigationBar.barTintColor = .black
            let attributes = [NSAttributedStringKey.foregroundColor: UIColor.white]
            navigationController?.navigationBar.largeTitleTextAttributes = attributes
        }
    
  • 5

    在Swift 3中,这适用于:

    navigationController?.navigationBar.barTintColor = UIColor.white
    navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue]
    
  • 95

    对于 TitleText TitleText 的自定义颜色,这里是Swift 3的简单和简短代码:

    UINavigationBar.appearance().titleTextAttributes = [NSForegroundColorAttributeName : UIColor.white]
    

    要么

    navigationController?.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName :UIColor.white]
    

相关问题