在黑暗和明亮模式之间切换时,我的UIBarButtonItem图像不会更改其颜色。
我以编程方式设置颜色,并期望在切换模式时在黑色和白色之间切换。 至少它与我的NavigationBar的tintColor兼容。
我设置:
myBarButton.tintColor = UIColor.white
,在黑暗和明亮模式下按钮的图像保持白色。
另一方面,以下是亮模式下的黑色和暗模式下的白色:
navigationBar.tintColor = UIColor.white
为什么它的行为有所不同,以及如何将此功能添加到UIBarButtonItem中?
答案 0 :(得分:1)
UIColor.white
不是动态颜色。无论外观设置如何,它都是白色的。如果要根据外观使用不同的颜色,则需要采用一种新的动态系统颜色(例如,UIColor.systemBackground
在浅色模式下为白色,在暗色模式下为黑色),或使用资产目录中浅色和深色外观的颜色值不同。
有关新系统颜色的更多信息:https://developer.apple.com/design/human-interface-guidelines/ios/visual-design/color#dynamic-system-colors
答案 1 :(得分:0)
使用iOS 13的新外观API: https://developer.apple.com/documentation/uikit/uinavigationbarappearance
示例:
let navStyle = UINavigationBarAppearance()
let buttonStyle = UIBarButtonItemAppearance()
// Change properties of buttonStyle here with dynamic colours such as UIColor.label.
style.buttonAppearance = buttonStyle
style.doneButtonAppearance = ...
style.backButtonAppearance = ...
navigationController?.navigationBar.standardAppearance = navStyle
navigationController?.navigationBar.scrollEdgeAppearance = ...
navigationController?.navigationBar.compactAppearance = ...