Làm cách nào để sử dụng chế độ tối trong trình giả lập iOS 13?


163

Trong khi tôi đang phát triển ứng dụng iOS, tôi cần thử nghiệm nó trong trình giả lập với tùy chọn chế độ tối để tôi có thể hiểu rõ hơn về giao diện người dùng ứng dụng. Nhưng khi tôi vào Cài đặt, tôi không nhận được tùy chọn cho chế độ tối như thiết bị thực hiển thị.

Câu trả lời:


296

Trong Cài đặt , di chuyển xuống cho nhà phát triển và sau đó tối Appearance ...

nhập mô tả hình ảnh ở đây


Cập nhật

Ngoài những điều trên, giờ đây còn có nhiều cách khác để cho phép xuất hiện bóng tối trong trình giả lập, như thể hiện trong nhiều câu trả lời tuyệt vời dưới đây.

• Thay đổi ghi đè môi trường từ Xcode (@AshCameron)

• Chuyển đổi Giao diện Atừ menu Trình mô phỏng (@ Shredder2794)

• Cập nhật từ dòng lệnh bằng cách sử dụng xcrun simctl ui booted appearance …(@blackjacx, @tadija)

• Lập trình bằng cách sử dụng overrideUserInterfaceStyle = .dark(@thisIsTheFoxe)

• Chỉ định UIUserInterfaceStyletrong bạn info.plist (@DhavalGevariya)

• Sử dụng SimGenie từ Curtis Herbert Hồi  https://simgenie.app


78

Bạn có thể chuyển đổi chế độ giao diện (tức là Sáng / Tối) cũng như điều chỉnh cài đặt loại động khi đang di chuyển (khi trình giả lập đang chạy) như thế này:

Chế độ tối với Xcode


Câu trả lời chính xác. Cũng tốt để xem tất cả các kích thước và khả năng tiếp cận khác, làm cho nó nhanh hơn rất nhiều khi phát triển
Matt Fletcher

3
Đẹp Tôi sẽ không bao giờ nhấp vào nút không được đánh dấu đó.
woz

3
Tôi nghĩ đây là câu trả lời được chấp nhận, ngắn gọn và tiện dụng thay vì đi qua nhiều menu.
Heckscheibe

6
Protip: nếu bạn có Trình mô phỏng ở nền trước, trên Xcode, bạn có thể Command + nhấp vào nút đó trong Xcode (và trên bất kỳ công tắc nào trong bảng điều khiển đó) để thay đổi cài đặt trong khi giữ trình giả lập ở phía trước! tín dụng: WWDC nhà nước của liên minh iirc
Graystripe

13

Thay đổi ngoại hình tự động

Xcode 11,4

Apple đã phát hành một bản cập nhật Xcode mạnh mẽ chứa một số điều hữu ích cho chủ đề này. Giao diện bây giờ có thể được chọn trực tiếp trong trình giả lập. Chỉ cần chọn Features > Toggle Appearancehoặc + + A. Việc chuyển đổi ngoại hình tự động có thể rất quan trọng, ví dụ: đối với các kiểm tra ảnh chụp màn hình tự động trên dòng lệnh. Kịch bản trở nên dễ dàng như thế này khi sử dụng 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

Không cần phải giả lập giết hoặc cài đặt lại, đó là một chiến thắng hiệu suất lớn. Cũng không còn loay hoay với bất kỳ công cụ plist nào nữa - bao giờ hết. Hãy nhớ rằng bạn phải sử dụng id thiết bị có sẵn trong thời gian chạy bạn sử dụng. Tìm ra chúng bằng cách sử dụngxcrun simctl list .

Xem thêm kịch bản hoàn chỉnh của tôi: https://github.com/Blackjacx/Scripts/blob/master/set-simulator-style.sh

Mã số 11.3

Có một cách sử dụng dòng lệnh để chuyển đổi một trình giả lập giữa chế độ sáng và tối. Nếu bạn có một mảng với ID thiết bị của mình, bạn có thể làm như sau:

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

Nếu bạn muốn chỉ định tên thiết bị trong tập lệnh của mình - vì ID thiết bị khác nhau trên các máy khác nhau - bạn cũng có thể dễ dàng tìm thấy id của chúng bằng mã bash sau:

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
Kể từ Xcode 11.4, điều này được hỗ trợ trực tiếp bởi Simulator.app và xcrun simctl uilệnh.
russbishop

1
Yep đã thấy điều này - Tôi sẽ cập nhật câu trả lời ngay khi tôi kiểm tra mọi thứ Tự động hóa vẫn tốt - đặc biệt là cho các bài kiểm tra tự động. Cài đặt simctl mới sẽ giúp mã trên dễ dàng hơn nhiều.
blackjacx

11

Bạn có thể sử dụng cài đặt "Chuyển đổi giao diện" từ menu thả xuống Trình mô phỏng (Shift-Command-A):

nhập mô tả hình ảnh ở đây


9

Ngoài ra, bạn cũng có thể chuyển đổi giao diện theo chương trình ( tài liệu ):

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

4

Có hai cách để bật chế độ tối trong Trình mô phỏng. Lưu ý: Đảm bảo rằng bạn đang sử dụng trình giả lập iOS 13. XD

Giải pháp 1: Thay đổi cài đặt bản dựng

  1. Mở ứng dụng Cài đặt
  2. Chọn nhà phát triển
  3. Kích hoạt xuất hiện bóng tối

Ảnh chụp màn hình-1

Giải pháp 2: Lập trình

Chỉ cần thêm khối mã này vào tệp ViewControll của bạn.

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

Ảnh chụp màn hình-2

Kiểm tra tài liệu táo này để biết thêm chi tiết.


0

Bạn cũng có thể chuyển chế độ Dark bằng cách sử dụng dòng này, bạn chỉ cần đặt những dòng này trong tập tin info.plist của bạn

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

0

từ thiết bị đầu cuối:

xcrun simctl ui booted appearance light

xcrun simctl ui booted appearance dark

Mã chỉ trả lời được cho phép, nhưng nó cũng được khuyến khích để giải thích câu trả lời. Xem xét thêm một số giải thích.
zonksoft
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.