¿Cómo usar el modo oscuro en el simulador de iOS 13?

165

Mientras estoy desarrollando la aplicación iOS, necesito probarla en el simulador con la opción de modo oscuro para poder obtener más claridad sobre la interfaz de usuario de la aplicación. Pero cuando voy a la Configuración, no obtengo la opción para el modo oscuro como se muestra en el dispositivo real.

Sr. Javed Multani
fuente

Respuestas:

302

En Configuración , desplácese hacia abajo hasta Desarrollador y luego Apariencia oscura ...

ingrese la descripción de la imagen aquí


Actualizar

Además de lo anterior, ahora hay muchas otras formas de habilitar la apariencia oscura en el simulador, como se muestra en las excelentes respuestas a continuación.

• Cambiar anulaciones de entorno desde Xcode (@AshCameron)

• Alternar apariencia Adesde el menú del simulador (@ Shredder2794)

• Actualización desde la línea de comando usando xcrun simctl ui booted appearance …(@blackjacx, @tadija)

• Uso programático overrideUserInterfaceStyle = .dark(@thisIsTheFoxe)

• Especifique UIUserInterfaceStyleen su info.plist (@DhavalGevariya)

• Utilice SimGenie de Curtis Herbert ...  https://simgenie.app

Ashley Mills
fuente
78

Puede alternar el modo de interfaz (es decir, claro / oscuro), así como ajustar la configuración de tipo dinámico sobre la marcha (cuando el simulador está funcionando) de esta manera:

Modo oscuro con Xcode

Ash Cameron
fuente
Gran respuesta. También es bueno ver todas las demás cosas de tamaño y accesibilidad, lo hace mucho más rápido cuando se desarrolla
Matt Fletcher
3
Agradable 👍 Nunca hubiera hecho clic en ese botón sin marcar.
woz
3
Creo que esta debería ser la respuesta aceptada, breve y práctica en lugar de pasar por varios menús.
Heckscheibe
66
Protip: si tiene el simulador en primer plano, sobre Xcode, puede Comando + clic en ese botón en Xcode (y en cualquier interruptor en ese panel) para cambiar la configuración mientras mantiene el simulador al frente. Crédito: WWDC Estado de la Unión IIRC
Graystripe
13

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 Appearanceo ⇧ + ⌘ + 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[@]}"
blackjacx
fuente
1
A partir de Xcode 11.4, esto es compatible directamente con Simulator.app y el xcrun simctl uicomando.
Russbishop
1
Sí, vi esto: actualizaré la respuesta tan pronto como haya probado todo 👍 La automatización sigue siendo agradable, especialmente para las pruebas automatizadas. La nueva configuración simctl hará que el código anterior sea mucho más fácil.
blackjacx
12

Puede usar la configuración "Alternar apariencia" en el menú desplegable del Simulador (Shift-Command-A):

ingrese la descripción de la imagen aquí

Trituradora2794
fuente
9

Alternativamente, también puede cambiar la apariencia mediante programación ( docs ):

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

Hay dos formas de habilitar el modo oscuro en el simulador. Nota: Asegúrese de estar usando el simulador de iOS 13. XD

Solución 1: cambiar la configuración de compilación

  1. Abra la aplicación de configuración
  2. Seleccionar desarrollador
  3. Habilitar apariencia oscura

Captura de pantalla-1

Solución 2: programáticamente

Simplemente agregue este bloque de código en su archivo ViewController.

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

Captura de pantalla-2

Consulte estos documentos de Apple para obtener más detalles.

Jayprakash Dubey
fuente
0

También puede cambiar el modo oscuro usando esta línea, solo necesita poner estas líneas en su archivo info.plist

<key>UIUserInterfaceStyle</key>
<string>Dark</string> //Light
Dhaval Gevariya
fuente
0

desde la terminal:

xcrun simctl ui booted appearance light

xcrun simctl ui booted appearance dark
tadija
fuente
Solo se permiten respuestas de código, pero se recomienda explicar la respuesta también. Considere agregar alguna explicación.
zonksoft