[ios] 시뮬레이터 iOS 13에서 다크 모드를 사용하는 방법은 무엇입니까?

iOS 앱을 개발하는 동안 어두운 모드 옵션으로 시뮬레이터에서 테스트해야 앱 UI에 대해 더 명확하게 알 수 있습니다. 그러나 설정으로 이동하면 실제 장치로 어두운 모드에 대한 옵션이 표시되지 않습니다.



답변

에서 설정 , 아래로 스크롤 개발자 다음과 어둠의 외관을

여기에 이미지 설명을 입력하십시오


최신 정보

위의 것 외에도 아래의 많은 훌륭한 답변에 표시된 것처럼 시뮬레이터에서 어두운 모양을 활성화하는 다른 많은 방법이 있습니다.

• Xcode에서 환경 재정의 변경 (@AshCameron)

A시뮬레이터 메뉴에서 모양 전환 (@ Shredder2794)

xcrun simctl ui booted appearance …(@blackjacx, @tadija)를 사용하여 명령 줄에서 업데이트

• 프로그래밍 방식으로 overrideUserInterfaceStyle = .dark(@thisIsTheFoxe)

info.plistUIUserInterfaceStyle 에서 지정 하십시오 (@DhavalGevariya)

• Curtis Herbert의 SimGenie 사용…  https://simgenie.app


답변

다음과 같이 인터페이스 모드 (예 : 밝음 / 어두움)를 전환하고 동적 모드 설정을 즉시 조정할 수 있습니다 (시뮬레이터가 실행 중일 때).

Xcode를 사용한 어두운 모드


답변

자동 모양 변경 ?

Xcode 11.4 ?

Apple은이 주제에 유용한 몇 가지 내용이 포함 된 강력한 Xcode 업데이트를 출시했습니다. 이제 시뮬레이터에서 모양을 직접 선택할 수 있습니다. Features > Toggle Appearance또는 ⇧ + ⌘ + A 만 선택하면 됩니다. 예를 들어 명령 줄에서 자동 스크린 샷 테스트의 경우 자동 모양 전환이 여전히 중요 할 수 있습니다. 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

더 이상 시뮬레이터를 죽이거나 재설정하지 않아도 성능이 크게 향상됩니다. 또한 plist 도구를 더 이상 다루지 않아도됩니다. 사용하는 런타임에서 사용 가능한 장치 ID를 사용해야합니다. 를 사용하여 찾으십시오 xcrun simctl list.

내 완전한 스크립트를 참조하십시오 : https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh

Xcode 11.3

명령 줄을 사용하여 시뮬레이터를 밝고 어두운 모드로 전환하는 방법이 있습니다. 장치 ID가있는 어레이가있는 경우 다음을 수행 할 수 있습니다.

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

스크립트에 장치 이름을 지정하려면 장치 ID가 다른 시스템에서 다르기 때문에 다음 bash 코드를 사용하여 장치 ID를 쉽게 찾을 수 있습니다.

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[@]}"


답변

시뮬레이터 메뉴 드롭 다운 (Shift-Command-A)에서 “모양 전환”설정을 사용할 수 있습니다.

여기에 이미지 설명을 입력하십시오


답변

또는 프로그래밍 방식으로 모양을 전환 할 수도 있습니다 ( docs ).

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


답변

시뮬레이터에서 다크 모드를 활성화하는 방법에는 두 가지가 있습니다. 참고 : iOS 13 시뮬레이터를 사용하고 있는지 확인하십시오. XD

해결 방법 1 : 빌드 설정 변경

  1. 설정 앱 열기
  2. 개발자 선택
  3. 사용 의 어두운 모습을

스크린 샷 -1

해결 방법 2 : 프로그래밍 방식으로

이 코드 블록을 ViewController 파일에 추가하십시오.

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

스크린 샷 -2

자세한 내용은 이 사과 문서 를 확인하십시오.


답변

이 줄을 사용하여 다크 모드를 전환 할 수도 있습니다. info.plist 파일 에이 줄을 넣으면됩니다.

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