iOS 13中UITableViewCell的默认背景颜色是什么?

时间:2019-07-24 15:30:30

标签: ios uitableview ios13

UIColor的默认背景UITableViewCell是什么?我需要一个恒定的UIColor对象,而不是RGB对象,因为我希望在iOS 13中实现暗模式。(我找不到任何匹配的颜色,例如[UIColor systemBackgroundColor])。

我在willDisplayCell:forRowAtIndexPath:处设置了一个断点,并打印了cell.backgroundColor。这就是我得到的:

<UIDynamicSystemColor: 0x600000bf2c00; name = tableCellGroupedBackgroundColor>

似乎是没有公共等效项目的私人班级。有什么建议针对此目标吗?

2 个答案:

答案 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