【发布时间】:2020-01-16 07:44:53
【问题描述】:
在 iOS 13 中,他们改变了导航栏颜色的操作方式。现在他们使用 UINavigationBarAppearance 和 UIBarButtonItemAppearance 以及 standardAppearance 和 scrollEdgeAppearance 来自定义导航栏。
我正在寻找一种方法来为standardAppearance 和scrollEdgeAppearance 设置不同的导航栏色调。或者能够更改每个外观的条形按钮图标颜色。
//set the standard nav bar appearance
let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.configureWithOpaqueBackground()
navBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.white]
navBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.white]
navBarAppearance.backgroundColor = UIColor.mainAppColorForNavBar
//set bar button appearance
let buttonAppearance = UIBarButtonItemAppearance()
buttonAppearance.normal.titleTextAttributes = [.foregroundColor : UIColor.white]
navBarAppearance.buttonAppearance = buttonAppearance
UINavigationBar.appearance(whenContainedInInstancesOf: [UINavigationController.self]).standardAppearance = navBarAppearance
//set the scroll edge nav bar appearance
let scrollNavBarAppearance = UINavigationBarAppearance()
scrollNavBarAppearance.configureWithOpaqueBackground()
scrollNavBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.label]
scrollNavBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.label]
//set bar button appearance
let scrollButtonAppearance = UIBarButtonItemAppearance()
scrollButtonAppearance.normal.titleTextAttributes = [.foregroundColor : UIColor.label]
scrollNavBarAppearance.buttonAppearance = scrollButtonAppearance
UINavigationBar.appearance(whenContainedInInstancesOf: [UINavigationController.self]).scrollEdgeAppearance = scrollNavBarAppearance
这将设置导航栏的色调,但不区分标准外观和滚动边缘外观。
UINavigationBar.appearance().tintColor = UIColor.white
目前在 scrollEdgeAppearance 中(看起来是我想要的方式,无需更改)
目前在standardAppearance(按钮丢失,因为它与背景颜色相同,我想在standardAppearance中将图标颜色更改为白色)
感谢任何帮助。
谢谢,
【问题讨论】:
-
你找到解决办法了吗?
-
@Mohammadalijf 抱歉耽搁了,还没有找到解决方案。
-
@user1184205 有什么解决办法吗?
-
@JERC 对不起,我没有找到。我最终改变了按钮的颜色,这样它在两种状态下都会突出。
标签: ios swift uinavigationcontroller ios13