我有一个集合视图,其中显示了应用程序中的时隙。在黑暗模式下,UILabel似乎没有在白色背景上显示黑色文本颜色。
在情节提要中,我已将标签的颜色设置为黑色(也尝试使用默认颜色)。
在代码中,当用户选择单元格时,
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if let cell = collectionView.cellForItem(at: indexPath) as? TimeCell{
cell.timeLabel.toggleTheme(true)
}
}
我有UILabel扩展名:
extension UILabel{
func toggleTheme(_ selected : Bool){
if selected{
if #available(iOS 13.0, *) {
if self.traitCollection.userInterfaceStyle == .dark{
self.textColor = UIColor.black
self.backgroundColor = UIColor.white
}else{
self.textColor = UIColor.white
self.backgroundColor = UIColor.black
}
} else {
self.textColor = UIColor.white
self.backgroundColor = UIColor.black
}
}else{
if #available(iOS 13.0, *) {
if self.traitCollection.userInterfaceStyle == .dark{
self.textColor = UIColor.white
self.backgroundColor = UIColor.black
}else{
self.textColor = UIColor.black
self.backgroundColor = UIColor.white
}
} else {
self.textColor = UIColor.black
self.backgroundColor = UIColor.white
}
}
}
}
结果是:
答案 0 :(得分:1)
有两种解决方案可确保在.dark模式下显示标签颜色:
1.将表格颜色设置为UIColor.labelColor
。这将根据设备主题是暗还是亮自动采用
另一个选项是在xcassets中定义颜色并为不同主题提供颜色变体。您需要将“外观”选择为“任意,深色”以提供多种颜色。请参考下图。使用定义后,您无需像下面的代码片段那样检查主题:
if #available(iOS 13.0, *) {
if self.traitCollection.userInterfaceStyle == .dark {
self.textColor = UIColor.black
self.backgroundColor = UIColor.white
} else {
self.textColor = UIColor.white
self.backgroundColor = UIColor.black
}
} else {
self.textColor = UIColor.white
self.backgroundColor = UIColor.black
}
您只需设置self.textColor = UIColor(named: "MyBlckColor")
希望这会有所帮助。
答案 1 :(得分:0)
在iOS 13中,默认颜色将无法用作黑色,因为默认颜色已更改为UIlabel的颜色,而不是黑色。
设置背景颜色后尝试设置文本颜色。
答案 2 :(得分:0)
以某种方式,集合视图中的标签无法正常工作。我尝试了不同的配置,但均无效果。我最终改为使用按钮,在我的情况下它起作用了。一旦使用标签,我将更新我的答案。
答案 3 :(得分:0)
如果使用默认标签颜色,则标签颜色在深色模式下为白色,在浅色模式下为黑色。
如果您使用自定义颜色,则劳工颜色就是您的自定义颜色。