【问题标题】:iOS dark mode. User Interface Style changes back and forth on entering on the backgroundiOS 深色模式。用户界面样式在后台输入时来回更改
【发布时间】:2020-12-01 23:19:55
【问题描述】:

我支持深色模式。在我的一些视图控制器中,我使用traitCollectionDidChange(_) 来处理用户界面样式更改。

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
        super.traitCollectionDidChange(previousTraitCollection)
        if #available(iOS 13.0, *) {
            if let p = previousTraitCollection {
                print("TRAIT COLLECTION \(p.userInterfaceStyle.desc) -> \(traitCollection.userInterfaceStyle.desc). \(UIApplication.shared.applicationState.desc); \(p.hasDifferentColorAppearance(comparedTo: traitCollection) ? "TRAIT CHANGED" : "TRAIT SAME")")
            }
        }
    }

当我按下主页按钮并进入后台时,此方法会触发两次:

TRAIT COLLECTION DARK -> LIGHT. BACKGROUND; TRAIT CHANGED
TRAIT COLLECTION LIGHT -> DARK. BACKGROUND; TRAIT CHANGED

当我在 iOS 设置中更改外观并返回前台时,我得到了

TRAIT COLLECTION DARK -> LIGHT. INACTIVE; TRAIT CHANGED

奇怪。每次我进入后台时,我都会来回更改用户界面样式。为什么?

【问题讨论】:

    标签: ios swift ios-darkmode uitraitcollection


    【解决方案1】:

    这是预期的行为。当您的应用暂停时,iOS 会拍摄屏幕快照以显示在应用切换器中。

    为了考虑到在您的应用暂停时发生从亮到暗或从暗到亮的切换的情况,它实际上需要两个快照;一亮一暗。

    然后,iOS 可以在应用切换器中显示正确的快照。

    【讨论】:

    • 这是有道理的。这在文档中有所描述吗?
    • 我不知道。我记得在 iOS 13 发布时看到了一条推文或其他相关内容。您可以通过向上滑动以获取任务切换器然后向下滑动以获取控制中心并在明暗之间切换来观察它。你可以看到所有的快照更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    • 2020-02-23
    • 2020-01-21
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    相关资源
    最近更新 更多