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

nbysray5  于 2022-11-23  发布在  Swift
关注(0)|答案(8)|浏览(310)

我正在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)

但是这会抛出一个错误(错误解包nil)。我应该如何正确地改变导航栏后退按钮的字体和颜色?感觉我没有修改正确的项目...

prdp8dxp

prdp8dxp1#

如果您想为条形按钮隐式设置相同的颜色,则在AppDelegate中,写入:

UINavigationBar.appearance().tintColor = UIColor.white //your desired color here
    • 更新日期:**

把这个放在AppDelegate中,

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)

希望这会有帮助:)

9udxz4iz

9udxz4iz2#

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)

工程治疗,为那些已经设法自定义他们的导航栏的其他部分,但不是后退按钮!

drkbr07n

drkbr07n3#

我认为你应该在你真正的风险投资之前在风险投资中改变它。看看: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

在你的准备方法中。

c3frrgcw

c3frrgcw4#

雨燕4

在AppDelegate.swift中

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

mitkmikd5#

在SWIFT 4.2中

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

ssm49v7z6#

请使用下列程式码:

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

根据需要改变颜色

ifsvaxew

ifsvaxew7#

创建自定义按钮,使其成为您想要,并添加操作返回。

func addBackBarButtonOnNavigationBar(){
   // add image here
    let searchImage:UIImage = UIImage(named: "back button image")!

     var backBtn:UIBarButtonItem = UIBarButtonItem(image: searchImage,  style: UIBarButtonItemStyle.Plain, target: self, action: #selector(classname.buttonActionMethodName(_:)))
    backBtn.tintColor = UIColor.lightGrayColor()
  if let font = UIFont(name: "AvenirNext", size: 15) {
    backBtn.setTitleTextAttributes([NSFontAttributeName: font], forState: UIControlState.Normal)
}
    self.navigationItem.leftBarButtonItem = backBtn

}

func buttonActionMethodName(){
  self.navigationController!.popViewControllerAnimated(true)

}
nvbavucw

nvbavucw8#

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)

请注意,它将对下一个推送的视图控制器有效,而不是显示器上的当前视图控制器,这就是为什么它非常混乱!
此外,检查情节提要并选择上一个视图控制器的导航项,然后在后退按钮(检查器)中键入内容。

相关问题