我想让我的文本在正常模式下显示为.white,在暗模式下显示为.black。我该怎么做?.label只会让文本在正常模式下显示为.black,在暗模式下显示为.white,但我想让它反过来。有人能解决这个问题吗?
.white
.black
.label
slsn1g291#
let myLabelColor = UIColor(dynamicProvider: { $0.userInterfaceStyle == .dark ? .black : .white })从iOS 13开始,UIColor有一个init(dynamicProvider:)创建使用指定块动态生成其颜色数据的颜色对象。https://developer.apple.com/documentation/uikit/uicolor/3238041-init如果您要创建许多动态颜色,您可能希望进行一个方便的init-这样可以节省键入的时间,并且您的意图对读者来说更清楚:
let myLabelColor = UIColor(dynamicProvider: { $0.userInterfaceStyle == .dark ? .black : .white })
UIColor
init(dynamicProvider:)
extension UIColor { /// Creates a color object that responds to `userInterfaceStyle` trait changes. public convenience init(light: UIColor, dark: UIColor) { guard #available(iOS 13.0, *) else { self.init(cgColor: light.cgColor); return } self.init(dynamicProvider: { $0.userInterfaceStyle == .dark ? dark : light }) } }
用法:let myLabelColor = UIColor(light: .white, dark: .black)(Note您可以使用提供的trait集合中的任何其他trait。例如,如果size类更改,您可以返回不同的颜色)
let myLabelColor = UIColor(light: .white, dark: .black)
pcww981p2#
在我的资源中,我创建了一个新的“颜色集”。为选择白色为“任何外观”和黑色为“黑暗”。然后我给这个图像集命名,并称之为:
text.textColor = UIColor(named: "ImageSet1")
2条答案
按热度按时间slsn1g291#
let myLabelColor = UIColor(dynamicProvider: { $0.userInterfaceStyle == .dark ? .black : .white })
从iOS 13开始,
UIColor
有一个init(dynamicProvider:)
创建使用指定块动态生成其颜色数据的颜色对象。
https://developer.apple.com/documentation/uikit/uicolor/3238041-init
如果您要创建许多动态颜色,您可能希望进行一个方便的init-这样可以节省键入的时间,并且您的意图对读者来说更清楚:
用法:
let myLabelColor = UIColor(light: .white, dark: .black)
(Note您可以使用提供的trait集合中的任何其他trait。例如,如果size类更改,您可以返回不同的颜色)
pcww981p2#
在我的资源中,我创建了一个新的“颜色集”。为选择白色为“任何外观”和黑色为“黑暗”。然后我给这个图像集命名,并称之为: