我正在这样写我的应用路由器:
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
}
答案 0 :(得分: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()
}