Jak korzystać z trybu ciemnego w symulatorze iOS 13?


164

Podczas opracowywania aplikacji na iOS muszę przetestować ją w symulatorze z opcją trybu ciemnego, aby uzyskać większą jasność co do interfejsu aplikacji. Ale kiedy przechodzę do ustawień, nie otrzymuję opcji trybu ciemnego, jak pokazuje prawdziwe urządzenie.

Odpowiedzi:


298

W Ustawieniach przewiń w dół do Deweloper, a następnie Ciemny wygląd

wprowadź opis obrazu tutaj


Aktualizacja

Oprócz powyższego istnieje teraz wiele innych sposobów na włączenie ciemnego wyglądu w symulatorze, jak pokazano w wielu świetnych odpowiedziach poniżej.

• Zmień zastąpienia środowiska z Xcode (@AshCameron)

• Przełącz wygląd Az menu symulatora (@ Shredder2794)

• Aktualizacja z wiersza poleceń za pomocą xcrun simctl ui booted appearance …(@blackjacx, @tadija)

• Programowo przy użyciu overrideUserInterfaceStyle = .dark(@thisIsTheFoxe)

• Określ UIUserInterfaceStylew swoim info.plist (@DhavalGevariya)

• Użyj SimGenie od Curtisa Herberta…  https://simgenie.app


78

Możesz przełączać tryb interfejsu (tj. Jasny / Ciemny), a także dostosowywać ustawienia typu dynamicznego w locie (gdy symulator działa) w następujący sposób:

Tryb ciemny z Xcode


Świetna odpowiedź. Również dobrze widzieć wszystkie inne rzeczy związane z rozmiarem i ułatwieniami dostępu, dzięki czemu programowanie jest o wiele szybsze
Matt Fletcher,

3
Świetnie 👍 Nigdy bym nie kliknął tego niezaznaczonego przycisku.
woz

3
Myślę, że to powinna być akceptowana odpowiedź, krótka i poręczna zamiast przechodzenia przez wiele menu.
Heckscheibe

6
Protip: jeśli masz Symulator na pierwszym planie, ponad Xcode, możesz Command + kliknij ten przycisk w Xcode (i na dowolnych przełącznikach w tym panelu), aby zmienić ustawienia, zachowując symulator z przodu! kredyt: stan WWDC związku iirc
Graystripe

13

Automatyczna zmiana wyglądu 🦉

Xcode 11,4 🌟

Apple wydało potężną aktualizację Xcode, która zawiera kilka przydatnych rzeczy na ten temat. Wygląd można teraz wybrać bezpośrednio w symulatorze. Po prostu wybierz Features > Toggle Appearancelub ⇧ + ⌘ + A. Automatyczne przełączanie wyglądu może nadal być ważne, np. Przy automatycznych testach zrzutów ekranu w wierszu poleceń. Skrypt staje się prosty w przypadku korzystania z 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

Koniec z zabijaniem lub ponownym ustawianiem symulatora, co jest ogromną wygraną w wydajności. Nie musisz już bawić się żadnymi narzędziami plist - nigdy. pamiętaj, że musisz używać identyfikatorów urządzeń, które są dostępne w używanym środowisku wykonawczym. Znajdź je za pomocą xcrun simctl list.

Zobacz także mój kompletny skrypt: https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh

Xcode 11.3

Istnieje sposób używania wiersza poleceń do przełączania symulatora między trybem jasnym i ciemnym. Jeśli masz tablicę z identyfikatorami urządzeń, możesz wykonać następujące czynności:

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

Jeśli chcesz określić nazwy urządzeń w swoim skrypcie - ponieważ identyfikatory urządzeń są różne na różnych komputerach - możesz również łatwo znaleźć ich identyfikatory za pomocą następującego kodu 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[@]}"

1
Od Xcode 11.4 jest to obsługiwane bezpośrednio przez Simulator.app i xcrun simctl uipolecenie.
Russbishop

1
Tak, widziałem - zaktualizuję odpowiedź, gdy tylko przetestuję wszystko 👍 Automatyzacja jest nadal fajna - szczególnie w przypadku testów automatycznych. Nowe ustawienie simctl znacznie ułatwi powyższy kod.
blackjacx

11

Możesz użyć ustawienia „Przełącz wygląd” z menu rozwijanego symulatora (Shift-Command-A):

wprowadź opis obrazu tutaj


9

Alternatywnie możesz również programowo zmienić wygląd ( dokumentacja ):

override func viewDidLoad() {
    super.viewDidLoad()
    #if DEBUG
    // change the appearance only while testing  
    overrideUserInterfaceStyle = .dark
    #endif
}

4

Istnieją dwa sposoby włączenia trybu ciemnego w symulatorze. Uwaga: upewnij się, że używasz symulatora iOS 13. XD

Rozwiązanie 1: Zmień ustawienia kompilacji

  1. Otwórz aplikację Ustawienia
  2. Wybierz programistę
  3. Włącz ciemny wygląd

Screenshot-1

Rozwiązanie 2: programowo

Po prostu dodaj ten blok kodu do pliku ViewController.

override func viewDidLoad() {
    super.viewDidLoad()
    #if DEBUG
    // This changes appearance only for debug mode
    overrideUserInterfaceStyle = .dark
    #endif
}

Screenshot-2

Więcej informacji znajdziesz w tej dokumentacji Apple .


0

Możesz także przełączyć tryb ciemny za pomocą tej linii, wystarczy umieścić te linie w pliku info.plist

<key>UIUserInterfaceStyle</key>
<string>Dark</string> //Light

0

z terminala:

xcrun simctl ui booted appearance light

xcrun simctl ui booted appearance dark

Dozwolone są tylko odpowiedzi kodu, ale zachęcamy również do wyjaśnienia odpowiedzi. Rozważ dodanie jakiegoś wyjaśnienia.
zonksoft
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.