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 Appearance
ou ⇧ + ⌘ + 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[@]}"