首页 > 解决方案 > 如何在变量中检测 iOS 设备外观更新?

问题描述

我有一个字符串,它从检测设备设置的外观的deviceColorScheme变量中获取它的值。colorScheme它一直有效,直到设备的外观在设置或控制中心中切换并且colorScheme不会更新。

@Environment(\.colorScheme) var colorScheme: ColorScheme
let deviceColorScheme: String = "\(colorScheme)"

我的问题是 - 我可以检测到这种变化吗?如果可以,怎么做?

标签: swiftswiftuiios-darkmode

解决方案


var isDark = false

if #available(iOS 13.0, *)
{
isDark = UIScreen.main.traitCollection.userInterfaceStyle == .dark ? true : false
}

override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
    if #available(iOS 13.0, *) {
        isDark = previousTraitCollection?.userInterfaceStyle == .dark ? true : false
    } else {
        print("Light")
        isDark = false
    }
}

推荐阅读