UIColor
のデフォルトの背景UITableViewCell
は何ですか? iOS 13でダークモードを実装したいため、RGBではなく定数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; name = secondarySystemGroupedBackgroundColor>、ライト:UIExtendedGrayColorSpace 1 1、ダーク:UIExtendedSRGBColorSpace 0.109804 0.109804 0.117647 1
<UIDynamicSystemColor:0x6000005a5f00; name = 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のmy SystemColors デモアプリを参照してください。
IOS 13では、ダークモードをサポートするために、セルの背景にsecondarySystemGroupedBackground
を使用できます。
Swiftコード:
if #available(iOS 13.0, *) {
cellBackgroundColor = .secondarySystemGroupedBackground
} else {
cellBackgroundColor = .white
}
同様に、グループテーブルビューの背景には、(プライマリ)systemGroupedBackground
を使用できます。
新しいセマンティックカラーは、他のグループ(プライマリ->セカンダリ->ターシャリ)を含むグループ用であり、テーブルビューに限定されません。それは完全に理にかなっています。私はそれについて書きました ここ 。