![](/img/trans.png)
[英]UINavigationBar appearance + iOS 13 Dark Mode - How to set app wide color?
[英]How to set iOS 13 dark mode large title color?
在我的应用程序中,我使用
let navigationBar = UINavigationBar.appearance()
navigationBar.largeTitleTextAttributes = [
NSAttributedString.Key.font: UIFont.SFProDisplay(ofSize: 34, weight: .bold),
NSAttributedString.Key.foregroundColor: UIColor.custom
]
static var custom: UIColor {
return UIColor(named: "color_custom")!
}
哪里有颜色集color_custom
。 但是在颜色模式之间切换时,它只使用 Any Appearance 颜色。 未使用深色外观。 为什么?
添加:
经过一些研究,我认为接下来应该添加到问题中:在我的应用程序中,我使用切换器在模式之间切换。 Storage.isDarkModeOn = newState // saving in user defaults
中。 然后:
class PapaViewController: UIViewController {
if #available(iOS 13.0, *) {
overrideUserInterfaceStyle = Storage.isDarkModeOn ? .dark : .light
}
}
其中 PapaViewController 是我应用程序中所有 UIViewControllers 的父 class。 因此,如果overrideUserInterfaceStyle ==.dark
和设备颜色模式 == .light
出现错误。 如果然后我将设备颜色模式更改为.dark
,则大标题看起来符合预期。
您现在显示的代码的问题仅仅是您正在与错误的视图 controller 交谈。 您需要更改的不是您的视图override
( self
):它是根视图 controller,在这种情况下可能是导航 controller。
class PapaViewController: UIViewController {
if #available(iOS 13.0, *) {
self.navigationController?.overrideUserInterfaceStyle = // ...
}
}
你试过用iOS 13的新外观API吗?
https://developer.apple.com/documentation/uikit/uinavigationbarappearance
例子:
let style = UINavigationBarAppearance()
style.largeTitleTextAttributes = [.font: #YOURFONT#]
navigationController?.navigationBar.standardAppearance = style
navigationController?.navigationBar.scrollEdgeAppearance = ...
navigationController?.navigationBar.compactAppearance = ...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.