web-dev-qa-db-fra.com

Comment utiliser le mode sombre dans le simulateur iOS 13?

Pendant que je développe l'application iOS, je dois la tester dans le simulateur avec l'option de mode sombre afin que je puisse obtenir plus de clarté sur l'interface utilisateur de l'application. Mais lorsque je passe au paramètre, je n'obtiens pas l'option pour le mode sombre comme le montre le véritable appareil.

100
Mr.Javed Multani

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

enter image description here

159
Ashley Mills

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 ceci:

Dark mode with Xcode

51
Ash Cameron

Alternativement, 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
}
7
thisIsTheFoxe

Changement d'apparence automatisé ????

Xcode 11.4 ????

Apple a publié une puissante mise à jour Xcode qui contient des informations utiles pour ce sujet. L'apparence peut maintenant être sélectionnée directement dans le simulateur. Sélectionnez simplement Features > Toggle Appearance ou ⇧ + ⌘ + A. Le changement automatique d'apparence peut être important, par ex. pour des tests de capture d'écran automatisés sur la ligne de commande. Le script devient facile comme ceci 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 est un énorme gain de performances. De plus, ne jouez plus avec aucun outil de plist - jamais. gardez à l'esprit que vous devez utiliser des identifiants de périphérique disponibles dans le runtime que vous utilisez. Découvrez-les à l'aide de 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 le mode 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 - puisque les ID de périphérique sont différents sur différentes machines - vous pouvez également facilement trouver 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[@]}"
6
blackjacx

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

Solution 1: Modifier les paramètres de build

  1. Ouvrez l'application Paramètres
  2. Sélectionnez Développeur
  3. Activer Apparence sombre

Screenshot-1

Solution 2: par programme

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
}

Screenshot-2

Vérifiez ceci Apple docs pour plus de détails.

1
Jayprakash Dubey