Измените цвет фона UINavigationbar и шрифт / цвет заголовка программно - PullRequest
0 голосов
/ 04 мая 2018

Я хочу изменить цвет фона панели навигации, шрифт и цвет заголовка программно в iOS 11 и swift 4 из AppDelegate. Я знаю, как это сделать с помощью XCode, но не нашел современного решения для этого программно.

Ответы [ 4 ]

0 голосов
/ 04 мая 2018

Вот шаги для этого только для определенных ViewControllers.

Я создал файл BaseViewController, который является родительским для всех моих ViewController. И следующий код был добавлен к viewDidLoad () BaseViewController.

  1. Для изменения цвета фона панели навигации

    self.navigationController?.navigationBar.barTintColor = UIColor.white
    
  2. Для изменения заголовка панели навигации и цвета кнопок панели

    self.navigationController?.navigationBar.tintColor = UIColor.black
    
  3. Для изменения шрифта

    self.navigationController?.navigationBar.titleTextAttributes = [NSAttributedStringKey.foregroundColor:UIColor.red, NSAttributedStringKey.font : UIFont.sourceSansPro(ofSize: 18.0), NSAttributedStringKey.kern:1.5]
    
0 голосов
/ 04 мая 2018

Для AppDelegate :

Введите следующий код в didFinishLaunchingWithOptions в AppDelegate:

    UINavigationBar.appearance().barTintColor = UIColor(red: 46.0/255.0, green: 14.0/255.0, blue: 74.0/255.0, alpha: 1.0)
    UINavigationBar.appearance().tintColor = UIColor.white
    UINavigationBar.appearance().titleTextAttributes = [NSAttributedStringKey.foregroundColor : UIColor.white]
    UINavigationBar.appearance().isTranslucent = false
0 голосов
/ 04 мая 2018

Вы можете использовать следующий код для изменения цвета фона и шрифта заголовка.

func setupNavigationBarAppearance() {
    UINavigationBar.appearance().tintColor = .black
    UINavigationBar.appearance().shadowImage = UIImage.imageFromColor(.black, width: 1.0, height: 1.0)?.resizableImage(withCapInsets: .zero, resizingMode: .tile)
    UINavigationBar.appearance().isTranslucent = false

    let font:UIFont = UIFont(name: "ProximaNova-Bold", size: 18.0)!
    let navbarTitleAtt = [
        NSAttributedStringKey.font:font,
        NSAttributedStringKey.foregroundColor: UIColor.white
    ]
    UINavigationBar.appearance().titleTextAttributes = navbarTitleAtt
}

И вызовите эту функцию в didFinishLaunchingWithOptions как setupNavigationBarAppearance (). Я использую этот же код, и он работает нормально.

0 голосов
/ 04 мая 2018

Просто используйте UINavigationBar.appearance()

Например:

UINavigationBar.appearance().titleTextAttributes = [.foregroundColor: UIColor.white]

или

UINavigationBar.appearance().barTintColor = .blue

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...