Come usare la modalità dark nel simulatore iOS 13?


165

Mentre sto sviluppando l'app per iOS, devo testarla nel simulatore con l'opzione modalità oscura in modo da poter ottenere più chiarezza sull'interfaccia utente dell'app. Ma quando vado alle Impostazioni non ottengo l'opzione per la modalità oscura come mostra il dispositivo reale.

Risposte:


302

In Impostazioni , scorri verso il basso fino a Sviluppatore e quindi Aspetto oscuro ...

inserisci qui la descrizione dell'immagine


Aggiornare

Oltre a quanto sopra, ora ci sono molti altri modi per abilitare l'aspetto oscuro nel simulatore, come mostrato nelle molte grandi risposte di seguito.

• Cambia ambiente sostituisce da Xcode (@AshCameron)

• Attiva / disattiva aspetto Adal menu Simulatore (@ Shredder2794)

• Aggiornamento dalla riga di comando utilizzando xcrun simctl ui booted appearance …(@blackjacx, @tadija)

• Utilizzo programmatico overrideUserInterfaceStyle = .dark(@thisIsTheFoxe)

• Specifica UIUserInterfaceStylenel tuo info.plist (@DhavalGevariya)

• Usa SimGenie di Curtis Herbert ...  https://simgenie.app


78

È possibile attivare o disattivare la modalità di interfaccia (ad esempio chiaro / scuro) e regolare al volo il tipo dinamico (quando il simulatore è in esecuzione) in questo modo:

Modalità scura con Xcode


Bella risposta. Anche bello vedere tutte le altre cose di dimensioni e accessibilità, lo rende molto più veloce durante lo sviluppo
Matt Fletcher,

3
Bello 👍 Non avrei mai cliccato su quel pulsante non contrassegnato.
Woj

3
questa dovrebbe essere la risposta accettata credo, breve e utile invece di passare attraverso più menu.
Heckscheibe

6
Protip: se hai Simulator in primo piano, su Xcode, puoi Comando + fare clic su quel pulsante in Xcode (e su qualsiasi interruttore in quel pannello) per modificare le impostazioni mantenendo il simulatore in primo piano! credito: WWDC stato dell'unione iirc
Graystripe

13

Cambio aspetto automatico 🦉

Xcode 11.4 🌟

Apple ha rilasciato un potente aggiornamento Xcode che contiene alcune cose utili per questo argomento. L'aspetto ora può essere selezionato direttamente nel simulatore. Basta selezionare Features > Toggle Appearanceo ⇧ + ⌘ + A. La commutazione automatica dell'aspetto potrebbe essere importante, ad es. Per i test automatici delle schermate sulla riga di comando. Lo script diventa così semplice quando si utilizza 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

Non è più necessario uccidere o reimpostare il simulatore, il che è una grande vittoria in termini di prestazioni. Inoltre, non dovrai più smanettare con gli strumenti di plist - mai. tenere presente che è necessario utilizzare gli ID dispositivo disponibili nel runtime in uso. Scoprili usando xcrun simctl list.

Vedi anche il mio script completo: https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh

Xcode 11.3

Esiste un modo per utilizzare la riga di comando per alternare un simulatore tra la modalità luce e quella scura. Se si dispone di un array con ID dispositivo, è possibile effettuare le seguenti operazioni:

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

Se vuoi specificare i nomi dei dispositivi nel tuo script - poiché gli ID dei dispositivi sono diversi su macchine diverse - puoi anche trovare facilmente i loro ID usando il seguente codice 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
A partire da Xcode 11.4 questo è supportato direttamente da Simulator.app e dal xcrun simctl uicomando.
russbishop

1
Ho visto questo: aggiornerò la risposta non appena avrò testato tutto 👍 L'automazione è ancora piacevole, specialmente per i test automatizzati. La nuova impostazione simctl renderà il codice sopra riportato molto più semplice.
Blackjacx,

12

È possibile utilizzare l'impostazione "Attiva / disattiva aspetto" dal menu a discesa del menu Simulatore (Maiusc-Comando-A):

inserisci qui la descrizione dell'immagine


9

In alternativa, puoi anche cambiare l'aspetto a livello di codice ( documenti ):

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

4

Esistono due modi per abilitare la modalità oscura in Simulator. Nota: assicurati di utilizzare il simulatore iOS 13. XD

Soluzione 1: modificare le impostazioni di compilazione

  1. Apri l' app Impostazioni
  2. Seleziona sviluppatore
  3. Abilita aspetto scuro

Screenshot-1

Soluzione 2: a livello di codice

Aggiungi semplicemente questo blocco di codice nel tuo file ViewController.

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

Screenshot-2

Controlla questi documenti Apple per maggiori dettagli.


0

Puoi anche cambiare modalità oscura usando questa linea, devi solo inserire queste linee nel tuo file info.plist

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

0

dal terminal:

xcrun simctl ui booted appearance light

xcrun simctl ui booted appearance dark

Sono consentite solo le risposte al codice, ma è anche incoraggiato a spiegare la risposta. Valuta di aggiungere qualche spiegazione.
zonksoft,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.