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

当我在开发iOS应用程序时,我需要用黑暗模式选项在模拟器中测试它,这样我就可以更清楚地了解应用程序的UI。但是当我进入设置时,我没有得到暗模式的选项,因为真实设备显示。

101257 次浏览

设置中,向下滚动到开发人员,然后是黑色的外表

enter image description here


更新

除了上面的,现在还有许多其他方法来启用模拟器中的黑暗外观,如下面的许多伟大的答案所示。

•从Xcode更改环境重写(@AshCameron)

从模拟器菜单中切换外观一个 (@Shredder2794)

•从命令行使用xcrun simctl ui booted appearance … (@blackjacx, @tadija)进行更新

•以编程方式使用overrideUserInterfaceStyle = .dark (@thisIsTheFoxe)

在你的info.plist (@DhavalGevariya)中指定UIUserInterfaceStyle

使用Curtis Herbert的SimGenie

您可以切换界面模式(即亮/暗),以及调整动态类型设置(当模拟器运行时),如下所示:

Dark mode with Xcode

或者,你也可以通过编程方式切换外观(文档):

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

自动外观更改🦉

Xcode 11.4🌟

苹果发布了一个强大的Xcode更新,其中包含了一些有用的东西。外观现在可以直接在模拟器中选择。只需选择Features > Toggle Appearance++一个。自动外观切换仍然很重要,例如在命令行上进行自动截图测试。当使用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工具了。请记住,您必须使用在所使用的运行时可用的设备标识。使用xcrun simctl list找到它们。

另见我的完整脚本:https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh

Xcode 11.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 < / p >

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

  1. 打开设置应用
  2. 选择开发人员
  3. 使黑色的外表

截图-1

解决方案2: 以编程方式

只需在ViewController文件中添加此代码块。

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

截图-2

查看苹果公司的文档获取更多细节。

您可以使用“切换外观”;(转变命令一个)从模拟器菜单设置:

模拟器比;功能比;切换外观⇧⌘一

Toggle Appearance

从终端:

xcrun simctl ui booted appearance light


xcrun simctl ui booted appearance dark