提问人:Joshua 提问时间:7/24/2019 最后编辑:Joshua 更新时间:11/26/2019 访问量:11957
iOS 13 中 UITableViewCell 的默认背景颜色是什么?
What is the default background color of UITableViewCell in iOS 13?
问:
的默认背景是什么?我需要一个常量对象而不是 RGB,因为我希望在 iOS 13 中实现深色模式。(我找不到任何匹配的颜色,例如)。UIColor
UITableViewCell
UIColor
[UIColor systemBackgroundColor]
我放置了一个断点并打印了.这是我得到的:willDisplayCell:forRowAtIndexPath:
cell.backgroundColor
<UIDynamicSystemColor: 0x600000bf2c00; name = tableCellGroupedBackgroundColor>
这似乎是一个没有公共等价物的私有类。有什么建议可以解决这个问题吗?
答:
纯样式表格视图中的单元格用作其背景、标题文本和副标题文本。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)"
}
}
}
例子:
print(UIColor.secondarySystemGroupedBackground.lightDarkDescription)
print(UIColor.secondaryLabel.lightDarkDescription)
print(UIColor.green.lightDarkDescription)
输出:
<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 演示应用程序。
评论
tableCellGroupedBackgroundColor
UIUserInterfaceLevel
tableCellGroupedBackgroundColor
在 iOS 13 中,要支持深色模式,您可以将其用于单元格背景。secondarySystemGroupedBackground
Swift代码:
if #available(iOS 13.0, *) {
cellBackgroundColor = .secondarySystemGroupedBackground
} else {
cellBackgroundColor = .white
}
相应地,对于组表视图背景,可以使用 (primary) 。systemGroupedBackground
新的语义颜色适用于包含其他组(主组>辅助组>三级组),并且不限于表视图。这是完全有道理的。我在这里写过。
下一个:如何提高核心数据性能?
评论