bugfix> ios > 投稿

次のようにアプリルーターを作成しています。

final class AppRouter {
    let navigationController: UINavigationController
    init(window: UIWindow) {
        navigationController = UINavigationController()
        window.rootViewController = navigationController
...
}

私は application:didFinishLaunchingWithOptions: でルーター初期化子を呼び出しています方法。

UINavigationBar.appearance() を使用して、プロパティ、子プロパティを変更してスタイル(色、フォント、その他)を変更しようとしていました

何も動作しません。私は translucent を設定していました偽に。ストーリーボードの変更のみが効果をもたらしますが、ストーリーボードベースのナビゲーションがあります。 私はこの問題について多くの投稿を見てきましたが、何も機能していません。

誰かがクックブックを持っていて、それが最新のiOS(現在11.4)で動作しているなら、共有してください!

編集:

私が言ったように、次のような変更を加える:

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 件
  • 以下の拡張機能を 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() 
        }
    
    

あなたの答え