UINavigationBar标题颜色

时间:2018-01-13 19:07:12

标签: ios uinavigationbar swift4 viewwillappear viewwilldisappear

当我回到主UIViewController时,为什么navigationBar标题的颜色不会变为白色?这是简单的代码(viewWillAppearviewWillDisappear),但它不起作用,当我回到这个VC时标题保持绿色。应用程序中的主要颜色也是绿色:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    UIApplication.shared.statusBarStyle = .lightContent

    DispatchQueue.main.async {
    self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.white, NSAttributedStringKey.font: UIFont(name: "Gotham-Medium", size: 20)!]
    }        
}


override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    UIApplication.shared.statusBarStyle = .default

    navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor: UIColor.green, NSAttributedStringKey.font: UIFont(name: "Gotham-Medium", size: 20)!]


}

3 个答案:

答案 0 :(得分:1)

var authContext = new AuthenticationContext(string.Format("https://login.windows.net/{0}", tenantId));
var credential = new ClientCredential(applicationId, password);
AuthenticationResult token = authContext.AcquireTokenAsync("https://management.core.windows.net/", credential).Result;
var credentials = new TokenCredentials(token.AccessToken);

从viewWillAppear。

中调用此方法

答案 1 :(得分:1)

由于视图控制器之间共享导航栏的方式以及系统如何更新导航栏,因此无法实现此目的。

然而,您可以做的是将UILabel放在导航栏的标题中,使用您想要的字体和颜色。此方法的优点是UILabel仅适用于该特定视图控制器,因此您永远不需要重置它。

因此在推送(第二个)视图控制器的viewDidLoad中输入以下代码:

{{1}}

(请注意,您可以将文本设置为您想要的任何内容,但self.navigationItem.title保持简单)

您现在可以从viewWillAppear和viewWillDisappear方法中删除与导航栏相关的代码。

答案 2 :(得分:0)

您要在视图中添加导航标题颜色代码,将显示上一个视图控制器。