Jos*_*hua 5 uitableview ios ios13
的默认背景UIColor是UITableViewCell什么?我需要一个恒定的UIColor对象而不是RGB,因为我想在iOS 13中实现暗模式。(我找不到任何匹配的颜色,例如[UIColor systemBackgroundColor])。
我在处设置了一个断点willDisplayCell:forRowAtIndexPath:并打印cell.backgroundColor。这就是我得到的:
<UIDynamicSystemColor: 0x600000bf2c00; name = tableCellGroupedBackgroundColor>
Run Code Online (Sandbox Code Playgroud)
似乎是没有公共等效项目的私人班级。有什么建议如何针对这个目标吗?
rma*_*ddy 15
普通样式表视图中的单元格UIColor.systemBackground[Color]用作背景,UIColor.label[Color]标题文本和UIColor.secondaryLabel[Color]字幕文本。
对于分组样式表视图,单元格背景使用UIColor.secondarySystemGroupedBackground[Color],而表视图背景使用UIColor.systemGroupedBackground[Color]。
所有这些都适用于亮/暗模式。
下面是一个有用的UIColor扩展,它允许您打印任何颜色的明暗描述。
extension UIColor {
var lightDarkDescription: String {
let lightTraits = UITraitCollection.init(userInterfaceStyle: .light)
let darkTraits = UITraitCollection.init(userInterfaceStyle: .dark)
let lightColor = self.resolvedColor(with: lightTraits)
let darkColor = self.resolvedColor(with: darkTraits)
if lightColor == darkColor {
return self.description
} else {
return "\(self), light: \(lightColor), dark: \(darkColor)"
}
}
}
Run Code Online (Sandbox Code Playgroud)
例子:
print(UIColor.secondarySystemGroupedBackground.lightDarkDescription)
print(UIColor.secondaryLabel.lightDarkDescription)
print(UIColor.green.lightDarkDescription)
Run Code Online (Sandbox Code Playgroud)
输出:
<UIDynamicSystemColor:0x6000005a5d80; 名称= secondarySystemGroupedBackgroundColor>,浅色:UIExtendedGrayColorSpace 1 1,深色:UIExtendedSRGBColorSpace 0.109804 0.109804 0.117647 1
<UIDynamicSystemColor:0x6000005a5f00; 名称= secondaryLabelColor>,浅色:UIExtendedSRGBColorSpace 0.235294 0.235294 0.262745 0.6,深色:UIExtendedSRGBColorSpace 0.921569 0.921569 0.960784 0.6
UIExtendedSRGBColorSpace 0 1 0 1
如果有人想使用所有颜色,请在GitHub上查看我的SystemColors演示应用程序。
在 iOS 13 中,为了支持深色模式,您可以使用secondarySystemGroupedBackground单元格背景。
斯威夫特代码:
if #available(iOS 13.0, *) {
cellBackgroundColor = .secondarySystemGroupedBackground
} else {
cellBackgroundColor = .white
}
Run Code Online (Sandbox Code Playgroud)
相应地,对于组表视图背景,您可以使用 (primary) systemGroupedBackground。
新的语义颜色用于组,包含其他组(主要 -> 次要 -> 第三),并且不限于表视图。这是完全有道理的。我在这里写过它。
| 归档时间: |
|
| 查看次数: |
2041 次 |
| 最近记录: |