【问题标题】:Change iOS 11 large title color更改 iOS 11 大标题颜色
【发布时间】:2017-06-29 10:59:25
【问题描述】:

我在 iOS 11 中使用了新的放大导航栏标题。但我似乎无法更改 textColor。

我试过了:

self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};

这没有做任何事情。有什么想法吗?

【问题讨论】:

标签: ios objective-c uinavigationbar


【解决方案1】:
self.navigationController.navigationBar.largeTitleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]}; 

【讨论】:

  • 必须是过时的,从 2019 年 1 月 6 日起在 Swift 4 中不起作用。
【解决方案2】:

我认为这仍然是 Xcode 9 beta 6 中的一个错误。

我为它找到了不同的“解决方案”:

  1. 如果您将其放入 AppDelegate 中,则可以更改标题的颜色:
如果#available(iOS 11.0,*){ UINavigationBar.appearance().largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue] }
  1. 其他方法是在 Controller 的 viewDidLoad 中设置颜色,但让它起作用的秘诀是同时设置字体:
如果#available(iOS 11.0,*){ self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.blue, NSAttributedStringKey.font: UIFont.systemFont(ofSize: 31, weight: UIFont.Weight.bold)] }

希望对你有帮助。

问候!

【讨论】:

  • 如果找不到#available(iOS 11.0, *) !
  • 那么这个问题只在目标c中!
  • 对于目标 C 它是 - @available(iOS 11.0, *)
【解决方案3】:

iOS 11

目标-C

if (@available(iOS 11.0, *)) {
    self.navigationController.navigationItem.largeTitleDisplayMode =  UINavigationItemLargeTitleDisplayModeAlways;
    self.navigationController.navigationBar.prefersLargeTitles = true;

// Change Color
    self.navigationController.navigationBar.largeTitleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};

} else {
    // Fallback on earlier versions
}

【讨论】:

    【解决方案4】:

    斯威夫特 4.2

    self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]
    

    带有命名颜色

    self.navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor(named: "Teal") ?? UIColor.black]
    

    【讨论】:

      【解决方案5】:

      Swift 到 Swift 3.2(不是 Swift 4+)

              self.navigationController?.navigationBar.largeTitleTextAttributes = [NSForegroundColorAttributeName: UIColor.white]
      

      【讨论】:

        【解决方案6】:
          let largeTitleTextAttributes: [NSAttributedString.Key: Any] = [.foregroundColor: UIColor.gray20, .font: UIFont.systemFont(ofSize: 24.0, weight: .bold)]
            if #available(iOS 15, *) {
                        let navigationBar = navigationController.navigationBar
                        let appearance = navigationBar.standardAppearance
                            appearance.largeTitleTextAttributes = largeTitleTextAttributes
                            navigationBar.standardAppearance = appearance
                            navigationBar.scrollEdgeAppearance = appearance
                    } else {
                            navigationController.navigationBar.largeTitleTextAttributes = largeTitleTextAttributes
                    }
        

        【讨论】:

        • 没有任何解释的代码很少有帮助。 Stack Overflow 是关于学习的,而不是提供 sn-ps 来盲目复制和粘贴。请编辑您的问题并解释它如何回答所提出的具体问题。见How to Answer
        【解决方案7】:

        斯威夫特 4+

            navigationController?.navigationBar.largeTitleTextAttributes
         = [NSAttributedString.Key.foregroundColor: UIColor.systemPink]
        
        
        
         
        

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-04
        • 2019-04-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多