代码之家  ›  专栏  ›  技术社区  ›  Prettygeek

更改uinavigationcontroller颜色和字体

  •  1
  • Prettygeek  · 技术社区  · 6 年前

    我正在这样写我的应用程序路由器:

    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 
    

    这在didfinitishlaunching中使用。

    或在构造器中:

    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 回复  |  直到 6 年前
        1
  •  1
  •   Vidhi Patel    6 年前

    使用下面的扩展名 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() 
        }