UIColor
的默认背景UITableViewCell
是什么?我需要一个恒定的UIColor
对象,而不是RGB对象,因为我希望在iOS 13中实现暗模式。(我找不到任何匹配的颜色,例如[UIColor systemBackgroundColor]
)。
我在willDisplayCell:forRowAtIndexPath:
处设置了一个断点,并打印了cell.backgroundColor
。这就是我得到的:
<UIDynamicSystemColor: 0x600000bf2c00; name = tableCellGroupedBackgroundColor>
似乎是没有公共等效项目的私人班级。有什么建议针对此目标吗?
答案 0 :(得分:2)
普通样式表视图中的单元格的背景使用UIColor.systemBackground[Color]
,标题文本使用UIColor.label[Color]
,副标题文本使用UIColor.secondaryLabel[Color]
。
对于分组样式表视图,单元格背景使用UIColor.secondarySystemGroupedBackground[Color]
,而表视图背景使用UIColor.sytemGroupedBackground[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)"
}
}
}
示例:
print(UIColor.secondarySystemGroupedBackground.lightDarkDescription)
print(UIColor.secondaryLabel.lightDarkDescription)
print(UIColor.green.lightDarkDescription)
输出:
,浅色:UIExtendedGrayColorSpace 1 1,深色:UIExtendedSRGBColorSpace 0.109804 0.109804 0.117647 1
,浅色: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演示应用。
答案 1 :(得分:1)
在iOS 13中,要支持黑暗模式,可以使用secondarySystemGroupedBackground
作为单元格背景。
Swift代码:
if #available(iOS 13.0, *) {
cellBackgroundColor = .secondarySystemGroupedBackground
} else {
cellBackgroundColor = .white
}
相应地,对于组表视图背景,可以使用(主要)systemGroupedBackground
。
新的语义颜色用于组,包含其他组(主要->次要->第三级),并且不限于表视图。这是很合理的。我写了here。