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.
Dans Paramètres, faites défiler jusqu'à Développeur puis Apparence sombre…
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
}
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
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[@]}"
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
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
}
Vérifiez ceci Apple docs pour plus de détails.