更改 UINavigationController 颜色和字体
Posted
技术标签:
【中文标题】更改 UINavigationController 颜色和字体【英文标题】:Change UINavigationController color and font 【发布时间】:2018-06-26 08:17:00 【问题描述】:我正在这样写我的应用路由器:
final class AppRouter
let navigationController: UINavigationController
init(window: UIWindow)
navigationController = UINavigationController()
window.rootViewController = navigationController
...
我正在application:didFinishLaunchingWithOptions:
方法中调用路由器初始化程序。
我试图通过使用 UINavigationBar.appearance()
更改它的属性、子属性来更改它的样式(颜色、字体和其他)
没有任何作用。我将translucent
设置为false。只有情节提要更改才会产生任何影响,但是我有基于情节提要的导航,这是我不想拥有的。
我看过很多关于这个问题的帖子,没有任何效果。
如果有人有适用于最新 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
【问题讨论】:
显示不起作用的代码+如何集成和使用AppRouter
您可以添加您的AppDelegate
代码吗?
【参考方案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()
【讨论】:
我会检查的。 它工作正常,我添加了一些改进:struct NavBarStyle var shadowImage: UIImage? var isTranslucent = true var barTintColor = UIColor.orange var tintColor = UIColor.brown var backgroundColor = UIColor.clear var navBarAttributesDictionary: [NSAttributedStringKey: Any]? = [ NSAttributedStringKey.foregroundColor: UIColor.black, NSAttributedStringKey.font: UIFont(name: "HelveticaNeue-Bold", size: 18.0)! ] extension UINavigationController func setMainTopNavigationBarAttribute(style: NavBarStyle) -> Void ...
以上是关于更改 UINavigationController 颜色和字体的主要内容,如果未能解决你的问题,请参考以下文章
更改 UINavigationController 中的视图高度
Swift:更改 UINavigationController 视图的高度
快速更改UITabBar中“更多” UINavigationController的背景颜色
更改 UINavigationController 颜色和字体