如何在模拟器iOS 13中使用暗模式?

时间:2019-09-18 08:48:37

标签: ios ios-simulator ios-darkmode

在开发iOS应用程序时,我需要在具有暗模式选项的模拟器中对其进行测试,以便我可以更清楚地了解应用程序UI。但是,当我转到“设置”时,我无法获得显示真实设备的黑暗模式选项。

8 个答案:

答案 0 :(得分:54)

设置中,向下滚动到开发人员,然后深色外观

enter image description here

答案 1 :(得分:28)

您可以像这样切换界面模式(即亮/暗)以及动态调整动态类型设置(运行模拟器时):

Dark mode with Xcode

答案 2 :(得分:20)

您可以从“模拟器”菜单下拉菜单(Shift-Command-A)中使用“切换外观”设置:

enter image description here

答案 3 :(得分:6)

或者,您也可以通过编程方式(docs)切换外观:

    override func viewDidLoad() {
        super.viewDidLoad()
        #if DEBUG
        // change the appearance only while testing  
        overrideUserInterfaceStyle = .dark
        #endif
    }

答案 4 :(得分:4)

有两种方法可以在Simulator中启用暗模式。 注意:请确保您使用的是iOS 13模拟器。 X-D

解决方案1: 更改构建设置

  1. 打开设置应用
  2. 选择 Developer
  3. 启用深色外观

Screenshot-1

解决方案2: 以编程方式

只需将此代码块添加到ViewController文件中即可。

override func viewDidLoad() {
    super.viewDidLoad()
    #if DEBUG
    // This changes appearance only for debug mode
    overrideUserInterfaceStyle = .dark
    #endif
}

Screenshot-2

选中此apple docs以获得更多详细信息。

答案 5 :(得分:2)

自动变暗/变亮

有一种使用命令行在明亮和黑暗模式之间切换模拟器的方法。如果您的阵列具有设备ID,则可以执行以下操作:

device_ids=("C741F3CD-FDAC-49EA-A4DB-7F797B97291E" "428183B6-3EB8-4D36-9938-9D07C141BF49")

# Determine the plist value for the desired style: "dark" -> 2 / "light" -> 1
style=2

for device_id in "${device_ids[@]}"; do
  plist_path="${HOME}/Library/Developer/CoreSimulator/Devices/${device_id}/data/Library/Preferences/com.apple.uikitservices.userInterfaceStyleMode.plist"  
  printf '\n%s' "Set style $style for device $device_id ($plist_path)"

  killall "Simulator"
  xcrun simctl shutdown booted
  xcrun simctl erase $device_id

  # Crate the plist since it might not be available after erase
  [[ ! -f "$plist_path" ]] && /usr/libexec/PlistBuddy -c "save" $plist_path  
  # Set the style mode
  plutil -replace UserInterfaceStyleMode -integer $style $plist_path
done

如果您要在脚本中指定设备名称-由于不同机器上的设备ID不同-您还可以使用以下bash代码轻松找到它们的ID:

device_names=("iPhone SE" "iPhone 8" "iPhone 11 Pro" "iPhone 11 Pro Max")
device_ids=()

for name in "${device_names[@]}"; do
  id=$(xcrun simctl list --json | jq ".devices | .[] | .[] | select(.name == \"$name\") | .udid" | cut -d\" -f2)
  device_ids+=("$id")
done

`printf '%s\n' "${device_ids[@]}"`

答案 6 :(得分:2)

从终端:

xcrun simctl ui booted appearance light

xcrun simctl ui booted appearance dark

答案 7 :(得分:0)

您也可以使用此行切换暗模式,只需将这些行放入info.plist文件中

<key>UIUserInterfaceStyle</key>
<string>Dark</string> //Light