Como usar o modo escuro no simulador iOS 13?

165

Enquanto desenvolvo o aplicativo para iOS, preciso testá-lo no simulador com a opção de modo escuro para ter mais clareza sobre a interface do usuário do aplicativo. Mas quando vou para a Configuração, não estou obtendo a opção para o modo escuro como exibição real do dispositivo.

Mr.Javed Multani
fonte

Respostas:

302

Em Configurações , role para baixo até Desenvolvedor e Aparência escura .

insira a descrição da imagem aqui


Atualizar

Além do exposto, agora existem muitas outras maneiras de ativar a aparência escura no simulador, conforme mostrado nas muitas ótimas respostas abaixo.

• Substituir substituições de ambiente do Xcode (@AshCameron)

• Alterne Aparência Ano menu Simulador (@ Shredder2794)

• Atualize na linha de comando usando xcrun simctl ui booted appearance …(@blackjacx, @tadija)

• Programaticamente usando overrideUserInterfaceStyle = .dark(@thisIsTheFoxe)

• Especifique UIUserInterfaceStylena sua info.plist (@DhavalGevariya)

• Use o SimGenie de Curtis Herbert…  https://simgenie.app

Ashley Mills
fonte
78

Você pode alternar o modo de interface (por exemplo, Claro / Escuro), bem como ajustar a configuração do tipo dinâmico em tempo real (quando o simulador estiver em execução), desta forma:

Modo escuro com Xcode

Ash Cameron
fonte
Ótima resposta. Também é bom para ver todos os outros de tamanho e acessibilidade coisas, faz com que seja muito mais rápido ao desenvolver
Matt Fletcher
3
Bom, eu nunca teria clicado nesse botão não marcado.
woz 3/01
3
acho que essa é a resposta aceita, curta e prática, em vez de passar por vários menus.
Heckscheibe
6
Protip: se você tiver o Simulador em primeiro plano, sobre o Xcode, poderá pressionar Command + clique nesse botão no Xcode (e em qualquer opção desse painel) para alterar as configurações, mantendo o simulador à frente! crédito: WWDC estado da união iirc
Graystripe 27/01
13

Mudança de aparência automatizada 🦉

Xcode 11.4 🌟

A Apple lançou uma atualização poderosa do Xcode, que contém algumas coisas úteis para este tópico. A aparência agora pode ser selecionada diretamente no simulador. Basta selecionar Features > Toggle Appearanceou ⇧ + ⌘ + A. A troca automática de aparência ainda pode ser importante, por exemplo, para testes automatizados de captura de tela na linha de comando. O script fica fácil assim quando se usa o 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

Não é mais necessário matar ou redefinir o simulador, o que é uma enorme vitória no desempenho. Também não há mais brincadeiras com ferramentas plist - nunca. lembre-se de que você precisa usar os IDs de dispositivos disponíveis no tempo de execução que você usa. Encontre-os usando xcrun simctl list.

Veja também meu script completo: https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh

Xcode 11.3

Existe uma maneira de usar a linha de comando para alternar um simulador entre o modo claro e escuro. Se você possui uma matriz com os IDs do seu dispositivo, pode fazer o seguinte:

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 você deseja especificar nomes de dispositivos em seu script - como os IDs de dispositivos são diferentes em máquinas diferentes - também é possível encontrar facilmente os IDs deles usando o seguinte código de base:

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
fonte
1
A partir do Xcode 11.4, isso é suportado diretamente pelo Simulator.app e pelo xcrun simctl uicomando.
russbishop
1
Sim, vi isso - atualizarei a resposta assim que testasse tudo 👍 A automação ainda é boa - especialmente para testes automatizados. A nova configuração simctl tornará o código acima muito mais fácil.
blackjacx
12

Você pode usar a configuração "Alternar aparência" no menu suspenso do simulador (Shift-Command-A):

insira a descrição da imagem aqui

Shredder2794
fonte
9

Como alternativa, você também pode alternar a aparência programaticamente ( docs ):

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

Existem duas maneiras de ativar o modo escuro no Simulator. Nota: verifique se você está usando o simulador do iOS 13. XD

Solução 1: Alterar as configurações de compilação

  1. Abra o aplicativo Configurações
  2. Selecionar desenvolvedor
  3. Ativar aparência escura

Captura de tela-1

Solução 2: programaticamente

Basta adicionar esse bloco de código ao seu arquivo ViewController.

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

Captura de tela-2

Verifique este documento da apple para obter mais detalhes.

Jayprakash Dubey
fonte
0

Você também pode alternar o modo Escuro usando esta linha, basta colocar essas linhas no seu arquivo info.plist

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

do terminal:

xcrun simctl ui booted appearance light

xcrun simctl ui booted appearance dark
tadija
fonte
As respostas apenas ao código são permitidas, mas é recomendável explicar a resposta também. Considere adicionar alguma explicação.
zonksoft