it-swarm.com.ru

Быстрое изменение шрифта и цвета кнопки возврата

Я занимаюсь разработкой приложения в Swift 2.2. Теперь я хочу изменить шрифт и цвет кнопки «Назад» для определенного вида. У рассматриваемого представления есть контроллер навигации как его родительский контроллер.

Я попытался запустить обе следующие строки в viewDidLoad моего ViewController

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)

Это, однако, выдает ошибку (ошибка развертывания ноль). Как правильно изменить шрифт и цвет навигационной кнопки назад? Такое ощущение, что я не изменяю нужные элементы ...

11
Anton Gildebrand

Если вы хотите установить тот же цвет для кнопок панели неявно, то в вашей 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)

Надеюсь, это поможет :)

15
Lion

Ответ 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)

Подходит для тех, кому уже удалось настроить другие части своих навигационных панелей, но не кнопку «Назад»!

13
David West

Я думаю, что вы должны изменить его в 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.

4
switchCTRL

создать пользовательскую кнопку и сделать ее, как вы хотите, и добавить действие, чтобы вернуться. 

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)

}
3
Chaudhary Ankit Deshwal

Используйте следующий код:

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

изменить цвет в соответствии с вашими потребностями

2
user5938635

Swift 4

в AppDelegate.Swift

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

в Swift 4.2

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