354 votes

Comment utiliser le mode sombre dans le simulateur iOS 13 ?

Pendant que je développe l'application iOS, j'ai besoin de la tester dans le simulateur avec l'option de mode sombre afin d'obtenir plus de clarté sur l'interface utilisateur de l'application. Mais lorsque je vais dans les paramètres, je n'obtiens pas l'option pour le mode sombre comme le montre l'appareil réel.

693voto

Ashley Mills Points 10205

Sur Paramètres , faites défiler jusqu'à Développeur et ensuite Apparence sombre

enter image description here


Mise à jour

En plus de ce qui précède, il y a maintenant beaucoup de Il existe d'autres moyens d'activer l'aspect sombre dans le simulateur, comme le montrent les nombreuses réponses ci-dessous.

- Modifier les surcharges d'environnement à partir de Xcode ( @AshCameron )

- Afficher l'apparence A dans le menu du simulateur ( @Shredder2794 )

- Mise à jour à partir de la ligne de commande en utilisant xcrun simctl ui booted appearance … ( @blackjacx, @tadija )

- Par programmation, en utilisant overrideUserInterfaceStyle = .dark ( @thisIsTheFoxe )

- Précisez UIUserInterfaceStyle dans votre info.plist (@ DhavalGevariya )

- Utilisez SimGenie de Curtis Herbert   https://simgenie.app

114voto

Ash Cameron Points 1608

Vous pouvez basculer le mode d'interface (c'est-à-dire clair/foncé) ainsi que régler le paramètre de type dynamique à la volée (lorsque le simulateur fonctionne) comme suit :

Dark mode with Xcode

0 votes

Bonne réponse. C'est également une bonne chose de voir tous les autres éléments relatifs à la taille et à l'accessibilité, ce qui rend le développement beaucoup plus rapide.

5 votes

Sympa, je n'aurais jamais cliqué sur ce bouton non marqué.

5 votes

Cela devrait être la réponse acceptée je pense, courte et pratique au lieu de passer par de multiples menus.

65voto

Shredder2794 Points 460

Vous pouvez utiliser la fonction "Toggle Appearance" ( ShiftCommandA ) dans le menu du simulateur :

Simulateur > Fonctionnalités > Basculer l'apparence A

Toggle Appearance

18voto

blackjacx Points 154

Changement d'apparence automatisé

Xcode 11.4

Apple a publié une puissante mise à jour de Xcode qui contient quelques éléments utiles à ce sujet. L'apparence peut désormais être sélectionnée directement dans le simulateur. Il suffit de sélectionner Features > Toggle Appearance o + + A . Le changement automatique d'apparence pourrait néanmoins être important, par exemple pour les tests automatisés de capture d'écran en ligne de commande. Le script devient facile comme ça en utilisant 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

Plus besoin de tuer le simulateur ou de le réinitialiser, ce qui représente un gain de performance considérable. De même, il n'est plus nécessaire de jouer avec des outils plist, jamais. Gardez à l'esprit que vous devez utiliser les identifiants de périphériques disponibles dans le runtime que vous utilisez. Pour les trouver, utilisez xcrun simctl list .

Voir aussi mon script complet : https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh

Xcode 11.3

Il existe un moyen d'utiliser la ligne de commande pour faire passer un simulateur du mode clair au mode foncé. Si vous disposez d'un tableau contenant les identifiants de vos appareils, vous pouvez procéder comme suit :

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

Si vous voulez spécifier des noms de périphériques dans votre script - puisque les ID des périphériques sont différents sur différentes machines - vous pouvez aussi facilement trouver leurs id en utilisant le code bash suivant :

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 votes

À partir de Xcode 11.4, cette fonction est prise en charge directement par Simulator.app et par l'outil de gestion de l'environnement. xcrun simctl ui commandement.

1 votes

J'ai vu cela - je mettrai à jour la réponse dès que j'aurai tout testé L'automatisation est toujours agréable - surtout pour les tests automatisés. Le nouveau paramètre simctl rendra le code ci-dessus beaucoup plus facile.

10voto

thisIsTheFoxe Points 673

Vous pouvez également changer l'apparence de manière programmatique ( docs ) :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X