Tej*_*uri 3 swift ios13 xcode11 ios-darkmode
我有一个集合视图,显示应用程序中的时间段。在黑暗模式下,UILabel 似乎没有在白色背景上显示黑色文本颜色。
在故事板中,我已将标签的颜色设置为黑色(也尝试了默认颜色)。
在代码中,当用户选择单元格时,
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
if let cell = collectionView.cellForItem(at: indexPath) as? TimeCell{
cell.timeLabel.toggleTheme(true)
}
}
Run Code Online (Sandbox Code Playgroud)
我有 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
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果是:
有两种解决方案可以确保UILabel在.dark模式下显示颜色:
将表格颜色设置为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
}
Run Code Online (Sandbox Code Playgroud)或者,您可以简单地设置 self.textColor = UIColor(named: "MyBlackColor")
希望这会有所帮助。

| 归档时间: |
|
| 查看次数: |
6039 次 |
| 最近记录: |