如何在 iOS Xcode Swift Playground 上模拟黑暗模式
How to simulate dark mode on iOS Xcode Swift Playground
类似于 and ,如何在Xcode Swift 游乐场实时取景中启用暗模式?
模拟器很可能是真实设备。对于此解决方案,运行 您在 Xcode 中的模拟器。模拟器主屏幕出现后,转到模拟器上的设置菜单,在设置菜单上有一个开发人员菜单。点击开发者菜单,你会看到深色外观开关。如果您切换该栏,那么您的所有应用程序都将 运行 处于深色模式。 (如果您的应用有深色模式版本)。
您可以使用 overrideUserInterfaceStyle
在任何视图中对其进行测试
例如,您可以将此代码粘贴到 playground 中进行检查(已在 Xcode 11.3.1 中测试):
import Foundation
import PlaygroundSupport
extension UIColor {
static var primary: UIColor {
UIColor { trait -> UIColor in
return trait.userInterfaceStyle == .light ? .black : .white
}
}
static var secondary: UIColor {
UIColor { trait -> UIColor in
return trait.userInterfaceStyle == .light ? .white : .black
}
}
}
class DarkModeTestView: UIView {
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 375, height: 300))
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .secondary
label.text = "This text should be displayed in black for light mode and white for dark mode"
label.textColor = .primary
label.numberOfLines = 0
addSubview(label)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
let testView = DarkModeTestView(frame: CGRect(x: 0, y: 0, width: 375, height: 300))
testView.overrideUserInterfaceStyle = .dark // Change here .light or .dark
PlaygroundPage.current.liveView = testView
类似于
模拟器很可能是真实设备。对于此解决方案,运行 您在 Xcode 中的模拟器。模拟器主屏幕出现后,转到模拟器上的设置菜单,在设置菜单上有一个开发人员菜单。点击开发者菜单,你会看到深色外观开关。如果您切换该栏,那么您的所有应用程序都将 运行 处于深色模式。 (如果您的应用有深色模式版本)。
您可以使用 overrideUserInterfaceStyle
例如,您可以将此代码粘贴到 playground 中进行检查(已在 Xcode 11.3.1 中测试):
import Foundation
import PlaygroundSupport
extension UIColor {
static var primary: UIColor {
UIColor { trait -> UIColor in
return trait.userInterfaceStyle == .light ? .black : .white
}
}
static var secondary: UIColor {
UIColor { trait -> UIColor in
return trait.userInterfaceStyle == .light ? .white : .black
}
}
}
class DarkModeTestView: UIView {
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 375, height: 300))
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = .secondary
label.text = "This text should be displayed in black for light mode and white for dark mode"
label.textColor = .primary
label.numberOfLines = 0
addSubview(label)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
let testView = DarkModeTestView(frame: CGRect(x: 0, y: 0, width: 375, height: 300))
testView.overrideUserInterfaceStyle = .dark // Change here .light or .dark
PlaygroundPage.current.liveView = testView