在真实设备上的 XCUI 测试中检测暗模式

Posted

技术标签:

【中文标题】在真实设备上的 XCUI 测试中检测暗模式【英文标题】:Detect dark mode in XCUI test on real devices 【发布时间】:2021-01-12 13:01:13 【问题描述】:

我正在尝试寻找一种方法来检测手机是否在 XCUI 测试中处于暗模式。到目前为止,我得到了这个:

    private func darkMode() -> Bool 
        if #available(ios 13, *) 
            return UIView().traitCollection.userInterfaceStyle == .dark
         else 
            return false
        
    

这非常适用于模拟器,但不适用于真实设备。如何在真实设备上实现这一点?

注意:我知道有一种方法可以在 XCUI 测试中设置暗/亮模式。我不要这个,我只想检测它。

【问题讨论】:

【参考方案1】:

只需在您的 viewController 中使用 traitCollectionDidChange 方法,如下所示:

//Call this method when you change UserInterface style
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) 
    print(previousTraitCollection," preview UI mode")

【讨论】:

以上是关于在真实设备上的 XCUI 测试中检测暗模式的主要内容,如果未能解决你的问题,请参考以下文章

iOS 13 版本的 XCUI 测试框架中未检测到 iOS Search Bar

如何在模拟器上启用暗模式?

为啥我的 iOS 应用没有禁用暗模式?

在miui(小米)中检测暗模式

根据 iOS 15 上的暗模式,Unity 着色器出现故障

如何检测 OS X 是不是处于暗模式?