快速更改后退按钮的字体和颜色

时间:2016-05-19 09:28:02

标签: ios swift swift2 uinavigationbar

我正在开发Swift 2.2中的应用程序。现在我想更改某个视图的后退按钮字体和颜色。有问题的视图有一个导航控制器作为它的父控制器。

我已尝试在ViewController的viewDidLoad中运行以下两行

self.navigationController!.navigationItem.backBarButtonItem!.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal)
self.navigationItem.backBarButtonItem!.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal)

不会抛出任何错误,但它对后退按钮没有任何影响。我也试过运行这两个

self.navigationController!.navigationItem.leftBarButtonItem!.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal)   
self.navigationItem.leftBarButtonItem!.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal)

然而,这会引发错误(错误展开为零)。我该如何正确更改导航栏后退按钮的字体和颜色?感觉就像我没有修改正确的物品......

8 个答案:

答案 0 :(得分:16)

如果您想隐式设置相同的颜色到条形按钮,请在appdelegate didfinishlaunchingwithoption写入

 UINavigationBar.appearance().tintColor = UIColor.whiteColor() //your desired color here

更新:

把它放在appdelegae中,

 UIBarButtonItem.appearance().setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Andes Rounded", size: 17)!], forState: .Normal) // your textattributes here

更新2:

  UIBarButtonItem.appearanceWhenContainedInInstancesOfClasses([UINavigationBar.classForCoder()]).setTitleTextAttributes(["attribute" : "value"], forState: .Normal)

希望这会有所帮助:)

答案 1 :(得分:13)

Swift 3.0回答(基于Lion的回答):

let newFont = UIFont(name: "Avenir Next", size: 16.0)!
let color = UIColor.white

UIBarButtonItem.appearance(whenContainedInInstancesOf: [UINavigationBar.classForCoder() as! UIAppearanceContainer.Type]).setTitleTextAttributes([NSForegroundColorAttributeName: color, NSFontAttributeName: newFont], for: .normal)

为那些已经设法定制导航条的其他部分而不是后退按钮的人提供服务!

答案 2 :(得分:5)

我认为您应该在实际的vc之前在vc中更改它。请看:UINavigationItem

编辑: 例如,你可以写:

let item = UIBarButtonItem(title: "Text goes here", style: .Plain, target: self, action: #selector(self.navigationController?.popViewControllerAnimated(_:)))

item.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "Helvetica-Bold", size: 23)!], forState: .Normal)

navigationItem.backBarButtonItem = item

在prepareForSegue方法中。

答案 3 :(得分:3)

创建自定义按钮并根据需要进行设置,并添加操作以返回。

select ID ,  Name ,  ProdID ,  
CASE WHEN ProdID IN (4,5) THEN 'N/A' ELSE Model END Model ,
CASE WHEN ProdID IN (4,5) THEN 'N/A' ELSE StudID END   StudID from @Table1

答案 4 :(得分:2)

使用以下代码:

    navigationController?.navigationBar.barTintColor = UIColor.purpleColor()
    navigationController?.navigationBar.tintColor = UIColor.whiteColor()

根据您的需要改变颜色

答案 5 :(得分:2)

Swift 4

在AppDelegate.swift

UIBarButtonItem.appearance().setTitleTextAttributes([NSAttributedStringKey.font: UIFont(name: "Helvetica-Bold", size: 15)!], for: .normal)

答案 6 :(得分:0)

迅速4.2

to change back button color
self.navigationController?.navigationBar.tintColor = .white

答案 7 :(得分:0)

Swift 5 中,您可以执行以下操作:

    self.navigationItem.backBarButtonItem?.tintColor = UIColor.red
    let attributes = [NSAttributedString.Key.font: UIFont.systemFont(ofSize: 17, weight: .regular)]
    self.navigationItem.backBarButtonItem?.setTitleTextAttributes(attributes, for: .normal)

请注意,它将对下一个推送视图控制器有效,而不是显示屏上的当前视图控制器,这就是为什么它非常令人困惑!

此外,检查情节提要,然后选择上一个视图控制器的导航项,然后在后退按钮(检查器)中键入一些内容。