Как использовать темный режим в симуляторе 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[@]}"
blackjacx
источник
1
Начиная с Xcode 11.4 это поддерживается непосредственно Simulator.app и xcrun simctl uiкомандой.
русский епископ
1
Да, видел это - я обновлю ответ, как только протестирую все. Автоматизация все еще хороша - особенно для автоматизированных тестов. Новая настройка simctl значительно упростит приведенный выше код.
blackjacx
12

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

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

Shredder2794
источник
9

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

override func viewDidLoad() {
    super.viewDidLoad()
    #if DEBUG
    // change the appearance only while testing  
    overrideUserInterfaceStyle = .dark
    #endif
}
thisIsTheFoxe
источник
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
Tadija
источник
Разрешены ответы только на код, но также рекомендуется объяснять ответ. Попробуйте добавить некоторые объяснения.
zonksoft