UIColor可以用深色和浅色两种颜色初始化吗?

问题描述 投票:0回答:1

我在训练应用中使用随机的蜡笔颜色(弹跳的圆圈),但是当我的iPad处于黑暗模式时,这些蜡笔看起来非常淡淡。我可以用两种颜色初始化UIColor吗?也许像这样:

UIColor(forLightMode: UIColor, forDarkMode: UIColor)

我当前的应用正在正确创建新颜色,但是当我从暗模式更改为亮模式时,它们不会自动更改。该应用程序刚刚开始从pastel集生成新的。

func makeRandomColor() -> UIColor {

    let fullRange : ClosedRange<CGFloat> = 0...255
    let pastelRange : ClosedRange<CGFloat> = 127...255

    let randomPastelRed     = CGFloat.random(in: pastelRange) / 255
    let randomPastelGreen   = CGFloat.random(in: pastelRange) / 255
    let randomPastelBlue    = CGFloat.random(in: pastelRange) / 255

    let randomRed           = CGFloat.random(in: fullRange) / 255
    let randomGreen         = CGFloat.random(in: fullRange) / 255
    let randomBlue          = CGFloat.random(in: fullRange) / 255

    let randomAlpha         = CGFloat.random(in: 0.6...1)

    return UIColor.init(dynamicProvider: { traitCollection in
        if traitCollection.userInterfaceStyle == .dark {
            return UIColor(
                red: randomRed,
                green: randomGreen,
                blue: randomBlue,
                alpha: randomAlpha
            )
        } else {
            return UIColor(
                red: randomPastelRed,
                green: randomPastelGreen,
                blue: randomPastelBlue,
                alpha: randomAlpha
            )
        }
    })

}
swift uiview uicolor
1个回答
0
投票

您需要通过从traitCollectionDidChangesetNeedsLayout()调用UIView或类似方法来收听UIViewController通知并重绘UI。有关更多信息,请检查Implementing Dark Mode on iOS〜22min

© www.soinside.com 2019 - 2024. All rights reserved.