Как использовать темный режим в симуляторе iOS 13?


168

Во время разработки приложения для iOS мне нужно протестировать его в симуляторе с опцией темного режима, чтобы получить больше ясности в интерфейсе приложения. Но когда я захожу в настройки, я не получаю опцию для темного режима, как показывает реальное устройство.

Ответы:


306

В Настройках прокрутите вниз до Разработчика и затем Темного Появления

введите описание изображения здесь


Обновить

В дополнение к вышесказанному, теперь есть много других способов включить темный вид в симуляторе, как показано во многих отличных ответах ниже.

• Изменить переопределения среды из Xcode (@AshCameron)

• Переключить внешний вид Aв меню симулятора (@ Shredder2794)

• Обновление из командной строки с помощью xcrun simctl ui booted appearance …(@blackjacx, @tadija)

• Программно используя overrideUserInterfaceStyle = .dark(@thisIsTheFoxe)

• Укажите UIUserInterfaceStyleв своем info.plist (@DhavalGevariya)

• Используйте SimGenie от Кертиса Герберта…  https://simgenie.app


78

Вы можете переключать режим интерфейса (т.е. светлый / темный), а также настраивать динамический тип настройки на лету (когда симулятор работает) следующим образом:

Темный режим с Xcode


Отличный ответ. Также приятно видеть все другие вещи размера и доступности, это делает его намного быстрее при разработке
Matt Fletcher

3
Хорошо, я бы никогда не нажал на эту неотмеченную кнопку.
Воз

3
я думаю, это должен быть принятый ответ, короткий и удобный, вместо того, чтобы проходить через несколько меню.
Heckscheibe

6
Подсказка: если у вас есть Симулятор на переднем плане, поверх XCode, вы можете Ctrl + клик по этой кнопке в XCode (и на любых переключателях на этой панели), чтобы изменить настройки, сохраняя симулятор впереди! кредит: WWDC состояние союза iirc
Graystripe

13

Автоматическое изменение внешнего вида 🦉

Xcode 11.4 🌟

Apple выпустила мощное обновление Xcode, которое содержит некоторые полезные вещи по этой теме. Внешний вид теперь можно выбрать прямо в симуляторе. Просто выберите 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 - никогда. имейте в виду, что вы должны использовать идентификаторы устройств, доступные в используемой вами среде выполнения. Узнайте их с помощью xcrun simctl list.

См. Также мой полный сценарий: https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh

Xcode 11.3

Есть способ использовать командную строку для переключения симулятора между светлым и темным режимами. Если у вас есть массив с идентификаторами устройств, вы можете сделать следующее:

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

Если вы хотите указать имена устройств в своем скрипте - поскольку идентификаторы устройств различаются на разных компьютерах - вы также можете легко найти их идентификаторы, используя следующий код bash:

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[@]}"

1
Начиная с Xcode 11.4 это поддерживается непосредственно Simulator.app и xcrun simctl uiкомандой.
русский епископ

1
Да, видел это - я обновлю ответ, как только протестирую все. Автоматизация все еще хороша - особенно для автоматизированных тестов. Новая настройка simctl значительно упростит приведенный выше код.
blackjacx

12

Вы можете использовать параметр «Переключить внешний вид» из выпадающего меню «Симулятор» (Shift-Command-A):

введите описание изображения здесь


9

Кроме того, вы также можете переключить внешний вид программно ( документы ):

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

4

Есть два способа включить темный режим в Simulator. Примечание. Убедитесь, что вы используете симулятор iOS 13. XD

Решение 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

Проверьте эту документацию Apple для получения более подробной информации.


0

Вы также можете переключить темный режим с помощью этой строки, вам просто нужно поместить эти строки в свой файл info.plist

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

0

от терминала:

xcrun simctl ui booted appearance light

xcrun simctl ui booted appearance dark

Разрешены ответы только на код, но также рекомендуется объяснять ответ. Попробуйте добавить некоторые объяснения.
zonksoft
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.