Cambio de apariencia automatizado 🦉
Xcode 11.4 🌟
Apple lanzó una potente actualización de Xcode que contiene algunas cosas útiles para este tema. La apariencia ahora se puede seleccionar directamente en el simulador. Simplemente seleccione Features > Toggle Appearance
o ⇧ + ⌘ + A. El cambio de apariencia automático aún podría ser importante, por ejemplo, para pruebas de captura de pantalla automatizadas en la línea de comando. El script se vuelve así de fácil cuando se usa 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
No se necesitan más asesinatos en el simulador o reestablecimientos, lo que es una gran victoria de rendimiento. Además, nunca más jugar con las herramientas de plist, nunca. tenga en cuenta que debe usar los identificadores de dispositivo que están disponibles en el tiempo de ejecución que usa. Encuéntralos usando xcrun simctl list
.
Vea también mi script completo: https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh
Xcode 11.3
Hay una manera de usar la línea de comando para cambiar un simulador entre el modo claro y oscuro. Si tiene una matriz con sus ID de dispositivo, puede hacer lo siguiente:
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 desea especificar los nombres de los dispositivos en su secuencia de comandos, ya que las ID de los dispositivos son diferentes en diferentes máquinas, también puede encontrar fácilmente sus ID utilizando el siguiente código bash:
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[@]}"