วิธีใช้โหมดมืดในโปรแกรมจำลอง iOS 13


201

ในขณะที่ฉันกำลังพัฒนาแอป iOS ฉันต้องทดสอบในโปรแกรมจำลองด้วยตัวเลือกโหมดมืดเพื่อที่ฉันจะได้รับความชัดเจนมากขึ้นเกี่ยวกับ UI ของแอป แต่เมื่อฉันไปที่การตั้งค่าฉันไม่ได้รับตัวเลือกสำหรับโหมดมืดตามที่อุปกรณ์จริงแสดง

คำตอบ:


374

ในการตั้งค่าเลื่อนลงไปที่นักพัฒนาและจากนั้นลักษณะมืด ...

ป้อนคำอธิบายภาพที่นี่


อัปเดต

นอกเหนือจากข้างต้นแล้วตอนนี้ยังมีวิธีอื่น ๆอีกมากมายในการเปิดใช้งานลักษณะมืดในเครื่องจำลองดังที่แสดงไว้ในคำตอบที่ยอดเยี่ยมมากมายด้านล่าง

•เปลี่ยนสภาพแวดล้อมแทนที่จาก Xcode ( @AshCameron )

•สลับลักษณะที่ปรากฏAจากเมนู Simulator ( @ Shredder2794 )

•อัปเดตจากบรรทัดคำสั่งโดยใช้xcrun simctl ui booted appearance …( @blackjacx, @tadija )

•โดยใช้โปรแกรมoverrideUserInterfaceStyle = .dark( @thisIsTheFoxe )

•ระบุUIUserInterfaceStyleในinfo.plistของคุณ(@ DhavalGevariya )

•ใช้ SimGenie จาก Curtis Herbert ...  https://simgenie.app


88

คุณสามารถสลับโหมดอินเทอร์เฟซ (เช่นแสง / มืด) รวมทั้งปรับการตั้งค่าประเภทไดนามิกได้ทันที (เมื่อเครื่องจำลองกำลังทำงาน) ดังนี้:

โหมดมืดพร้อม Xcode


คำตอบที่ดี นอกจากนี้ยังดีที่ได้เห็นขนาดอื่น ๆ และสิ่งที่สามารถเข้าถึงได้ทำให้การพัฒนาเร็วขึ้นมาก
Matt Fletcher

4
ดี👍ฉันจะไม่คลิกปุ่มที่ไม่มีเครื่องหมายนั้นเลย
woz

4
นี่ควรเป็นคำตอบที่ได้รับการยอมรับฉันคิดว่าสั้นและสะดวกแทนที่จะต้องผ่านเมนูต่างๆ
Heckscheibe

6
Protip: หากคุณมี Simulator อยู่เบื้องหน้าเหนือ Xcode คุณสามารถ Command + คลิกที่ปุ่มนั้นใน Xcode (และบนสวิตช์ใด ๆ ในแผงควบคุมนั้น) เพื่อเปลี่ยนการตั้งค่าในขณะที่ให้เครื่องจำลองอยู่ข้างหน้า! เครดิต: WWDC state of the union iirc
Graystripe


13

การเปลี่ยนแปลงรูปลักษณ์อัตโนมัติ🦉

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

ไม่จำเป็นต้องฆ่าตัวจำลองหรือตั้งค่าใหม่อีกต่อไปซึ่งเป็นผลงานที่ยอดเยี่ยม นอกจากนี้ยังไม่มีการเล่นซอด้วยเครื่องมือคีมใด ๆ อีกต่อไป โปรดทราบว่าคุณต้องใช้รหัสอุปกรณ์ที่มีอยู่ในรันไทม์ที่คุณใช้ xcrun simctl listพบพวกเขาออกมาใช้

ดูสคริปต์ทั้งหมดของฉัน: https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh

Xcode 11.3

มีวิธีการใช้บรรทัดคำสั่งเพื่อสลับตัวจำลองระหว่างโหมดสว่างและโหมดมืด หากคุณมีอาร์เรย์ที่มีรหัสอุปกรณ์ของคุณคุณสามารถทำสิ่งต่อไปนี้:

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

หากคุณต้องการระบุชื่ออุปกรณ์ในสคริปต์ของคุณ - เนื่องจากรหัสอุปกรณ์แตกต่างกันในแต่ละเครื่องคุณยังสามารถค้นหารหัสของอุปกรณ์เหล่านี้ได้อย่างง่ายดายโดยใช้รหัสทุบตีต่อไปนี้:

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
ตั้งแต่ Xcode 11.4 สิ่งนี้ได้รับการสนับสนุนโดยตรงโดย Simulator.app และxcrun simctl uiคำสั่ง
russbishop

1
เห็นสิ่งนี้ - ฉันจะอัปเดตคำตอบทันทีที่ฉันทดสอบทุกอย่าง👍ระบบอัตโนมัติยังคงดีอยู่ - โดยเฉพาะสำหรับการทดสอบอัตโนมัติ การตั้งค่า simctl ใหม่จะทำให้โค้ดด้านบนง่ายขึ้นมาก
blackjacx

9

หรือคุณสามารถเปลี่ยนลักษณะที่ปรากฏโดยใช้โปรแกรม ( เอกสาร ):

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

4

มีสองวิธีในการเปิดโหมดมืดในโปรแกรมจำลอง หมายเหตุ: ตรวจสอบให้แน่ใจว่าคุณใช้โปรแกรมจำลอง 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

ตรวจสอบเอกสาร Appleนี้สำหรับรายละเอียดเพิ่มเติม


2

จากอาคารผู้โดยสาร:

xcrun simctl ui booted appearance light

xcrun simctl ui booted appearance dark

อนุญาตให้ใช้รหัสคำตอบเท่านั้น แต่ขอแนะนำให้อธิบายคำตอบด้วย ลองเพิ่มคำอธิบาย
zonksoft

0

คุณยังสามารถสลับโหมดมืดโดยใช้บรรทัดนี้คุณเพียงแค่ใส่บรรทัดเหล่านี้ในไฟล์ info.plist ของคุณ

<key>UIUserInterfaceStyle</key>
<string>Dark</string> //Light
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.