如何在 iOS Xcode Swift Playground 上模拟暗模式

Posted

技术标签:

【中文标题】如何在 iOS Xcode Swift Playground 上模拟暗模式【英文标题】:How to simulate dark mode on iOS Xcode Swift Playground 【发布时间】:2020-05-21 14:12:33 【问题描述】:

类似于How to use dark mode in simulator ios 13? 和How to enable Dark Mode on the Simulator?,如何在 Xcode Swift Playground Live View 中启用暗模式?

【问题讨论】:

【参考方案1】:

您可以使用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

【讨论】:

【参考方案2】:

模拟器很可能是实际设备。对于此解决方案,请在 Xcode 中运行您的模拟器。模拟器主屏幕显示后,转到模拟器上的设置菜单,在设置菜单上有一个开发者菜单。点击开发者菜单,你会看到深色外观开关。如果您切换该栏,那么您的所有应用程序都将在暗模式下运行。 (如果您的应用有深色模式版本)。

【讨论】:

以上是关于如何在 iOS Xcode Swift Playground 上模拟暗模式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 8/Swift 3 中创建 iOS liveView [重复]

如何使用 Swift 2 + XCode 7 + iOS 9 获取和解析 JSON [重复]

如何在 SWIFT Xcode 中导入 Rollout.io

如何在 iOS Xcode Swift Playground 上模拟暗模式

如何在 Xcode 8 和 iOS 10 中使用 AFNetworking 类和 Swift 3 上传图像

如何让链接在 iOS 中使用 Xcode/Swift 自动打开 safari 应用程序(不是本地)?