स्वचालित प्रकटन परिवर्तन Change
Xcode 11.4 🌟
Apple ने एक शक्तिशाली Xcode अपडेट जारी किया जिसमें इस विषय के लिए कुछ उपयोगी चीजें हैं। अब सूरत को सीधे सिम्युलेटर में चुना जा सकता है। बस का चयन करें Features > Toggle Appearance
या select + The + ए। स्वचालित रूप से स्विच करना महत्वपूर्ण हो सकता है, जैसे कि कमांड लाइन पर स्वचालित स्क्रीनशॉट परीक्षणों के लिए। 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[@]}"