iOS13模拟器暗黑模式如何使用?
How to use dark mode in simulator iOS 13?
在开发 iOS 应用程序时,我需要在模拟器中使用暗模式选项对其进行测试,以便我可以更清楚地了解该应用程序 UI。但是当我进入设置时,我没有像真实设备显示的那样获得暗模式选项。
在设置中,向下滚动到开发人员,然后深色外观…
更新
除上述方法外,现在还有许多其他方法可以在模拟器中启用深色外观,如下面的许多精彩答案所示。
• 更改环境覆盖 Xcode ()
• 从模拟器菜单切换外观 ⇧⌘A()
• 使用 xcrun simctl ui booted appearance …
()
从命令行更新
• 以编程方式使用 overrideUserInterfaceStyle = .dark
()
• 在您的 info.plist (@DhavalGevariya)
中指定 UIUserInterfaceStyle
• 使用 Curtis Herbert 的 SimGenie……https://simgenie.app
您可以切换界面模式(即亮/暗)以及动态调整动态类型设置(当模拟器为 运行 时),如下所示:
或者,您也可以通过编程方式切换外观 (docs):
override func viewDidLoad() {
super.viewDidLoad()
#if DEBUG
// change the appearance only while testing
overrideUserInterfaceStyle = .dark
#endif
}
自动外观更改
Xcode 11.4
Apple 发布了一个功能强大的 Xcode 更新,其中包含一些对此主题有用的内容。现在可以直接在模拟器中 select 编辑外观。只需 select Features > Toggle Appearance
或 ⇧+⌘+A。自动外观切换可能仍然很重要,例如用于命令行上的自动屏幕截图测试。使用 Xcode 11.4:
时脚本变得像这样简单
device_ids=("C741F3CD-FDAC-49EA-A4DB-7F797B97291E" "428183B6-3EB8-4D36-9938-9D07C141BF49")
# The value to use is now just 'dark' or 'light'
appearance=dark
for device in "${device_ids[@]}"; do
xcrun simctl boot $device
xcrun simctl ui $device appearance $appearance
done
不再需要杀死模拟器或重新设置,这是一个巨大的性能胜利。也不再摆弄任何 plist 工具 - 永远。请记住,您必须使用在您使用的运行时中可用的设备 ID。使用 xcrun simctl list
.
找出它们
另见我的完整脚本:https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh
Xcode11.3
有一种方法可以使用命令行在明暗模式之间切换模拟器。如果您有一个包含设备 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[@]}"
有两种方法可以在模拟器中启用暗模式。
注意:确保您使用的是 iOS 13 模拟器。 X-D
解决方案 1: 更改构建设置
- 打开设置应用程序
- Select 开发人员
- 启用深色外观
解决方案 2:以编程方式
只需将此代码块添加到您的 ViewController 文件中。
override func viewDidLoad() {
super.viewDidLoad()
#if DEBUG
// This changes appearance only for debug mode
overrideUserInterfaceStyle = .dark
#endif
}
查看此 apple docs 了解更多详情。
您可以使用“切换外观”(ShiftCommandA) 设置模拟器菜单:
Simulator > Features > Toggle Appearance ⇧⌘A
来自终端:
xcrun simctl ui booted appearance light
xcrun simctl ui booted appearance dark
在开发 iOS 应用程序时,我需要在模拟器中使用暗模式选项对其进行测试,以便我可以更清楚地了解该应用程序 UI。但是当我进入设置时,我没有像真实设备显示的那样获得暗模式选项。
在设置中,向下滚动到开发人员,然后深色外观…
更新
除上述方法外,现在还有许多其他方法可以在模拟器中启用深色外观,如下面的许多精彩答案所示。
• 更改环境覆盖 Xcode (
• 从模拟器菜单切换外观 ⇧⌘A(
• 使用 xcrun simctl ui booted appearance …
(
• 以编程方式使用 overrideUserInterfaceStyle = .dark
(
• 在您的 info.plist (@DhavalGevariya)
中指定UIUserInterfaceStyle
• 使用 Curtis Herbert 的 SimGenie……https://simgenie.app
您可以切换界面模式(即亮/暗)以及动态调整动态类型设置(当模拟器为 运行 时),如下所示:
或者,您也可以通过编程方式切换外观 (docs):
override func viewDidLoad() {
super.viewDidLoad()
#if DEBUG
// change the appearance only while testing
overrideUserInterfaceStyle = .dark
#endif
}
自动外观更改
Xcode 11.4
Apple 发布了一个功能强大的 Xcode 更新,其中包含一些对此主题有用的内容。现在可以直接在模拟器中 select 编辑外观。只需 select Features > Toggle Appearance
或 ⇧+⌘+A。自动外观切换可能仍然很重要,例如用于命令行上的自动屏幕截图测试。使用 Xcode 11.4:
device_ids=("C741F3CD-FDAC-49EA-A4DB-7F797B97291E" "428183B6-3EB8-4D36-9938-9D07C141BF49")
# The value to use is now just 'dark' or 'light'
appearance=dark
for device in "${device_ids[@]}"; do
xcrun simctl boot $device
xcrun simctl ui $device appearance $appearance
done
不再需要杀死模拟器或重新设置,这是一个巨大的性能胜利。也不再摆弄任何 plist 工具 - 永远。请记住,您必须使用在您使用的运行时中可用的设备 ID。使用 xcrun simctl list
.
另见我的完整脚本:https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh
Xcode11.3
有一种方法可以使用命令行在明暗模式之间切换模拟器。如果您有一个包含设备 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[@]}"
有两种方法可以在模拟器中启用暗模式。 注意:确保您使用的是 iOS 13 模拟器。 X-D
解决方案 1: 更改构建设置
- 打开设置应用程序
- Select 开发人员
- 启用深色外观
解决方案 2:以编程方式
只需将此代码块添加到您的 ViewController 文件中。
override func viewDidLoad() {
super.viewDidLoad()
#if DEBUG
// This changes appearance only for debug mode
overrideUserInterfaceStyle = .dark
#endif
}
查看此 apple docs 了解更多详情。
您可以使用“切换外观”(ShiftCommandA) 设置模拟器菜单:
Simulator > Features > Toggle Appearance ⇧⌘A
来自终端:
xcrun simctl ui booted appearance light
xcrun simctl ui booted appearance dark