Изменить цвет и шрифт UINavigationController - PullRequest
0 голосов
/ 26 июня 2018

Я пишу свой маршрутизатор приложений так:

final class AppRouter {

    let navigationController: UINavigationController

    init(window: UIWindow) {
        navigationController = UINavigationController()
        window.rootViewController = navigationController
...
}

Я вызываю инициализатор маршрутизатора в методе application:didFinishLaunchingWithOptions:.

Я пытался изменить его стиль (цвет, шрифт и т. Д.), Изменив его свойства, дочерние свойства, используя UINavigationBar.appearance()

Ничего не работает. Я установил translucent в false. Только изменения раскадровки оказывают какое-либо влияние, но тогда у меня есть навигация на основе раскадровки, которой я не хочу иметь. Я видел много сообщений об этой проблеме, ничего не работает.

Если у кого-то есть поваренная книга, работающая на новейшей iOS (в настоящее время 11.4), пожалуйста, поделитесь!

Edit:

Как я уже говорил, внесение изменений, например:

UINavigationBar.appearance().barTintColor = color
UINavigationBar.appearance().isTranslucent = false 

это используется в didFinishLaunching.

или в конструкторе:

navigationController.navigationBar.barTintColor = color

Оба метода не могут установить цвет панели контроллера навигации.

Редактировать 2: Звонки делегатов приложения:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {

    let window = UIWindow(frame: UIScreen.main.bounds)
    self.window = window
    window.makeKeyAndVisible()
    appRouter = AppRouter(window: window)
    return true
}

1 Ответ

0 голосов
/ 26 июня 2018

Используйте ниже расширение для UINavigationController

     extension UINavigationController
     {
        func setMainTopNavigationBarAttribute() -> Void
        {

             self.navigationBar.shadowImage     = UIImage()
             self.navigationBar.isTranslucent   = false
             self.navigationBar.barTintColor    = UIColor.black
             self.navigationBar.tintColor       = UIColor.white
             self.navigationBar.backgroundColor = UIColor.clear
            let navBarAttributesDictionary: [NSAttributedStringKey: Any]? = [
            NSAttributedStringKey.foregroundColor: UIColor.black,
            NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 18.0)
        ]
        self.navigationBar.titleTextAttributes = navBarAttributesDictionary
         }
      }

    final class AppRouter {

        let navigationController: UINavigationController

        init(window: UIWindow) {
            navigationController = UINavigationController()
            window.rootViewController = navigationController
            navigationController.setMainTopNavigationBarAttribute() 
    }
...