PushViewController & 设置导航栏颜色和标题

Posted

技术标签:

【中文标题】PushViewController & 设置导航栏颜色和标题【英文标题】:PushViewController & set navigation bar color and title 【发布时间】:2015-12-17 21:28:50 【问题描述】:

我在一个按钮中做了一个推送功能:

@IBAction func prodButton(sender: AnyObject) 

    let storyboard = UIStoryboard(name: "Main", bundle: nil)

    var secondViewController = CollectionViewController()

    secondViewController = storyboard.instantiateViewControllerWithIdentifier("CollectionViewController") as! CollectionViewController

    self.navigationController?.pushViewController(secondViewController, animated: true)

这个按钮推送到 secondViewController 但是当我查看第二个视图控制器的导航栏时,我注意到它已经自动设置了一个后退按钮。问题是这个后退按钮的颜色是浅蓝色的,不符合我的设计。我试图在 viewDidAppear 中改变它

self.navigationItem.leftBarButtonItem?.tintColor = UIColor.redColor()

还有条形颜色:

self.navigationController?.navigationBar.barTintColor = UIColor(red: 65, green: 61, blue: 116, alpha: 1.0)

但没有任何变化。

如果有人帮助我,我将非常感激。

提前致谢。

【问题讨论】:

【参考方案1】:

尝试设置你的颜色一次,以后到处都是相同的颜色:

let navBar = UINavigationBar.appearance()
navBar.tintColor = UIColor.redColor()

您应该将此代码放在 AppDelegate 中。如果你使用它,你也可以在 Storyboard 中设置 barTint。

【讨论】:

我试过了,但没用。感谢您的快速回答。 你在 secondViewController 中设置这一行对吗? 是的,在 viewDidAppear 中 是的,它似乎是只读的,我编辑了我的答案,它应该可以肯定:) 谢谢,但现在按钮和栏都是白色的。【参考方案2】:

使用

   //Func Alter color navigation bar
   func AlteraCorNavigationBar(Navigation:UINavigationController)
       Navigation.navigationBar.tintColor = CorTextoNavigationBar()
       //Navigation.navigationBar.barTintColor = CorPredominante()
       Navigation.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName : CorTextoNavigationBar(), NSFontAttributeName : UIFont(name: "ArialHebrew-Light", size: 22)!]
   


   //func CorPredominante()->UIColor
       //return UIColor.redColor()
       //(rgba: "#ecf0f1")
       // YOU CAN LIBRARY COLOR RGBA [HERE][1] AND USE UIColor(rgba: "#b6011a")
   //


   func CorTextoNavigationBar()->UIColor
       return UIColor(red: 65, green: 61, blue: 116, alpha: 1.0) 
   

在视图控制器中调用:

class NewViewController: UIViewController 

      override func viewDidLoad() 
          super.viewDidLoad()

          AlteraCorNavigationBar(navigationController)
      


【讨论】:

我不知道为什么,但是当我输入 UIColor(red: 65, green: 61, blue: 116, alpha: 1.0) 时,颜色是白色的。当我说出确切的颜色UIColor.redColor() 时,它可以正常工作。 使用这个:navigationBar.tintColor = UIColor(red: 65, green: 61, blue: 116, alpha: 1.0) navigationBar.titleTextAttributes = [NSForegroundColorAttributeName : UIColor(red: 65, green: 61,蓝色:116,alpha:1.0),NSFontAttributeName:UIFont(名称:“ArialHebrew-Light”,大小:22)!] 谢谢。这只会将后退按钮更改为白色,栏保持默认。您知道如何将按钮文本从“返回”更改为其他内容吗? 这会改变后退按钮和标题。 要更改按钮文本,您必须转到情节提要并单击导航栏的视图,您将返回而不是您是谁,然后在“属性检查器”中更改文本后退按钮“【参考方案3】:

我发现了错误。 颜色应除以 255:

UINavigationBar.appearance().tintColor = UIColor(red: 149.0 / 255.0, green: 148.0 / 255.0, blue: 192.0 / 255.0, alpha: 0.5)

UINavigationBar.appearance().barTintColor = UIColor(red: 65.0 / 255.0, green: 61.0 / 255.0, blue: 116.0 / 255.0, alpha: 1.0)

谢谢大家的帮助;)

【讨论】:

以上是关于PushViewController & 设置导航栏颜色和标题的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 pushviewcontroller 的情况下制作“pushviewcontroller”动画?

pushViewController 极慢

SwiftUI - 使用“pushViewController”时出现致命错误

pushViewController 和 showViewController 的区别

popViewController 和 pushViewController 动画

pushViewController和presentViewController的区别