iOS13深色模式大标题颜色怎么设置?
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
}
}
对于我的应用程序中的所有 UIViewController,PapaViewController 是 parent class。因此,如果 overrideUserInterfaceStyle == .dark
和设备颜色模式 == .light
错误就会出现。如果然后我将设备颜色模式更改为 .dark
那么大标题看起来符合预期。
你试过使用iOS13的新外观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 = ...
您现在显示的代码的问题仅仅是您与错误的视图控制器通信。它不是 你的 视图控制器 (self
) 你需要更改其 override
:它是 root 视图控制器,在本例中可能是导航控制器。
class PapaViewController: UIViewController {
if #available(iOS 13.0, *) {
self.navigationController?.overrideUserInterfaceStyle = // ...
}
}
在我的应用程序中我使用
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
}
}
对于我的应用程序中的所有 UIViewController,PapaViewController 是 parent class。因此,如果 overrideUserInterfaceStyle == .dark
和设备颜色模式 == .light
错误就会出现。如果然后我将设备颜色模式更改为 .dark
那么大标题看起来符合预期。
你试过使用iOS13的新外观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 = ...
您现在显示的代码的问题仅仅是您与错误的视图控制器通信。它不是 你的 视图控制器 (self
) 你需要更改其 override
:它是 root 视图控制器,在本例中可能是导航控制器。
class PapaViewController: UIViewController {
if #available(iOS 13.0, *) {
self.navigationController?.overrideUserInterfaceStyle = // ...
}
}