我有一个如下所示的登录屏幕:Login screen
基本上,我想进行设置,以便在执行以下操作后:在此登录屏幕中->输入背景->在设置中切换暗模式或亮模式->输入前景,dropShadowView
及其元素也会相应更改。下面是我的代码:
override func viewDidLoad() {
super.viewDidLoad()
setupForDarkmode()
NotificationCenter.default.addObserver(self, selector: #selector(willEnterForeground), name: UIApplication.willEnterForegroundNotification, object: nil)
}
@objc func willEnterForeground() {
setupForDarkmode()
}
private func setupForDarkmode() {
if #available(iOS 13.0, *) {
overrideUserInterfaceStyle = .unspecified
if traitCollection.userInterfaceStyle == .dark {
dropShadowView.backgroundColor = .black
userNameTextField.backgroundColor = .black
userNameTextField.textColor = .white
passwordTextField.backgroundColor = .black
passwordTextField.textColor = .white
} else {
dropShadowView.backgroundColor = .white
userNameTextField.backgroundColor = .gray
userNameTextField.textColor = .blue
passwordTextField.backgroundColor = .gray
passwordTextField.textColor = .blue
}
}
}
但是上述代码未能按我预期的那样工作。更改设置后,首次进入前景时,dropShadowView
及其元素保持其外观,直到第二次。
经过一段时间的调试后,我发现在更改设置(灯光模式-> exp的暗模式)之后,在行if traitCollection.userInterfaceStyle == .dark {
处,最初并不能识别当前的userInterfaceStyle
(与系统的背景色不同)。] >
我的应用程序的目标低于iOS 11,因此我在使用颜色设置时也遇到了一些问题。
问题是存在并且可能的方式以编程方式为暗模式更新UI?
提前感谢。
我有一个如下所示的登录屏幕:登录屏幕基本上,我想进行以下操作:在此登录屏幕中时->输入背景->切换暗模式或亮模式...
changeDarkLightMode()
的函数。您必须在: