Автоматизована зміна зовнішності 🦉
Xcode 11,4 🌟
Apple випустила потужне оновлення Xcode, яке містить деякі корисні речі для цієї теми. Зовнішній вигляд тепер можна вибрати безпосередньо в тренажері. Просто виберіть Features > Toggle Appearance
або ⇧ + ⌘ + A. Автоматичне перемикання зовнішнього вигляду може бути важливим, наприклад, для автоматизованих тестів скріншоту в командному рядку. Сценарій стає таким простим при використанні 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
Більше не потрібно вбивати або повторно налаштовувати тренажер, що є величезною виграшю від продуктивності. Крім того, більше ніколи не обманюючись будь-якими інструментами плистів. майте на увазі, що вам потрібно використовувати ідентифікатори пристрою, які доступні під час використання. Знайдіть їх, використовуючи xcrun simctl list
.
Дивіться також мій повний сценарій: https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh
Xcode 11.3
Існує спосіб за допомогою командного рядка переключити тренажер між світлим і темним режимом. Якщо у вас є масив з ідентифікаторами пристрою, ви можете зробити наступне:
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
Якщо ви хочете вказати назви пристроїв у своєму скрипті - оскільки ідентифікатори пристроїв різні на різних машинах - ви також можете легко знайти їхні ідентифікатори, використовуючи наступний баш-код:
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[@]}"