Comment utiliser le mode sombre dans le simulateur iOS 13?

165

Pendant que je développe l'application iOS, je dois la tester dans un simulateur avec l'option de mode sombre afin d'obtenir plus de clarté sur l'interface utilisateur de l'application. Mais quand je vais au réglage, je n'obtiens pas d'option pour le mode sombre comme affichage réel de l'appareil.

Monsieur Javed Multani
la source

Réponses:

302

Dans Paramètres , faites défiler jusqu'à Développeur , puis Apparence sombre

entrez la description de l'image ici


Mettre à jour

En plus de ce qui précède, il existe maintenant de nombreuses autres façons d'activer l'apparence sombre dans le simulateur, comme le montrent les nombreuses réponses ci-dessous.

• Modifier les remplacements d'environnement depuis Xcode (@AshCameron)

• Activer / désactiver l'apparence Adans le menu Simulateur (@ Shredder2794)

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

• Utilisation par programmation overrideUserInterfaceStyle = .dark(@thisIsTheFoxe)

• Précisez UIUserInterfaceStyledans votre info.plist (@DhavalGevariya)

• Utilisez SimGenie de Curtis Herbert…  https://simgenie.app

Ashley Mills
la source
78

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 est en cours d'exécution) comme ceci:

Mode sombre avec Xcode

Ash Cameron
la source
Très bonne réponse. Il est également bon de voir toutes les autres choses en matière de taille et d'accessibilité, ce qui le rend beaucoup plus rapide lors du développement
Matt Fletcher
3
Bien, je n'aurais jamais cliqué sur ce bouton non marqué.
woz le
3
cela devrait être la réponse acceptée je pense, courte et pratique au lieu de passer par plusieurs menus.
Heckscheibe
6
Protip: si vous avez Simulator au premier plan, sur Xcode, vous pouvez Commande + clic sur ce bouton dans Xcode (et sur tous les commutateurs de ce panneau) pour modifier les paramètres tout en gardant le simulateur devant! crédit: WWDC state of the union iirc
Graystripe
13

Changement d'apparence automatisé 🦉

Xcode 11,4 🌟

Apple a publié une puissante mise à jour Xcode qui contient des éléments utiles pour ce sujet. L'apparence peut maintenant être sélectionnée directement dans le simulateur. Sélectionnez simplement Features > Toggle Appearanceou ⇧ + ⌘ + A. Le changement automatique d'apparence peut encore être important, par exemple pour les tests de capture d'écran automatisés sur la ligne de commande. Le script devient simple comme ça lors de l'utilisation de 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 ou de réinitialiser le simulateur, ce qui représente une énorme victoire en termes de performances. Plus besoin de manipuler les outils plist - jamais. gardez à l'esprit que vous devez utiliser les identifiants d'appareils disponibles dans l'environnement d'exécution que vous utilisez. Découvrez-les en utilisant 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 basculer un simulateur entre le mode clair et sombre. Si vous disposez d'une baie avec vos ID de périphérique, vous pouvez effectuer les opérations suivantes:

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 souhaitez spécifier des noms de périphérique dans votre script - étant donné que les ID de périphérique sont différents sur différentes machines - vous pouvez également trouver facilement leurs identifiants à l'aide du 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[@]}"
blackjacx
la source
1
Depuis Xcode 11.4, cela est pris en charge directement par Simulator.app et la xcrun simctl uicommande.
russbishop
1
Oui, je vais mettre à jour la réponse dès que j'ai tout testé I L'automatisation est toujours agréable - en particulier pour les tests automatisés. Le nouveau paramètre simctl rendra le code ci-dessus beaucoup plus facile.
blackjacx le
12

Vous pouvez utiliser le paramètre "Activer / désactiver l'apparence" dans le menu déroulant du simulateur (Maj-Commande-A):

entrez la description de l'image ici

Déchiqueteur2794
la source
9

Vous pouvez également changer l'apparence par programme ( docs ):

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

Il existe deux façons d'activer le mode sombre dans Simulator. Remarque: assurez-vous que vous utilisez le simulateur iOS 13. XD

Solution 1: modifier les paramètres de construction

  1. Ouvrez l' application Paramètres
  2. Sélectionnez un développeur
  3. Activer l' apparence sombre

Capture d'écran-1

Solution 2: par programmation

Ajoutez simplement ce bloc de code dans votre fichier ViewController.

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

Capture d'écran-2

Consultez cette documentation Apple pour plus de détails.

Jayprakash Dubey
la source
0

Vous pouvez également basculer en mode sombre en utilisant cette ligne, il vous suffit de mettre ces lignes dans votre fichier info.plist

<key>UIUserInterfaceStyle</key>
<string>Dark</string> //Light
Dhaval Gevariya
la source
0

depuis le terminal:

xcrun simctl ui booted appearance light

xcrun simctl ui booted appearance dark
Tadija
la source
Seules les réponses au code sont autorisées, mais il est également recommandé d'expliquer la réponse. Pensez à ajouter quelques explications.
zonksoft le