当在暗模式和亮模式之间切换,然后进入前景时更新用户界面

问题描述 投票:0回答:1

我有一个如下所示的登录屏幕:Login screen

基本上,我想进行设置,以便在执行以下操作后:在此登录屏幕中->输入背景->在设置中切换暗模式或亮模式->输入前景,dropShadowView及其元素也会相应更改。下面是我的代码:

  • 在viewDidLoad():
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?

提前感谢。

我有一个如下所示的登录屏幕:登录屏幕基本上,我想进行以下操作:在此登录屏幕中时->输入背景->切换暗模式或亮模式...

ios swift user-interface foreground ios-darkmode
1个回答
0
投票
我有一个像您一样的名为changeDarkLightMode()的函数。您必须在:
© www.soinside.com 2019 - 2024. All rights reserved.