⚾
UITableCellの仕様を扱うUIListContentConfigrationについて
俺たちの cell.textLabel が will be deprecated になっちまった
代わりに UIListContentConfigration
とおっしゃっています。そこで今回はこの UIListContentConfigration
を見ていきます。
注意
SwiftUIではなく従来方式で記事を書きます。
ただし、Storyboardを使わないでコードで書きます。
基本系
let cell = //セル取得
var cc = cell.defaultContentConfiguration()
cc.text = "セルのテキスト"
cell.contentConfiguration = cc
return cell
defaultContentConfiguration()
で取得できるものは UIListContentConfigration
です。
UIListContentConfigrationってなんぞ?
iOS14〜 で使えます。セルの中身を設定するものです。
上のリンク先によると、
セル、ヘッダー、フッターなど、リストに表示される個々の要素のスタイリングとコンテンツを記述します。
とのことです。見た目と内容の両方扱うものですな。
少し視野を広げまして...
UITableViewCell
にiOS14から
-
contentConfiguration
というプロパティ - その
contentConfiguration
に入れるものを手っ取り早く入手する手段としてdefaultContentConfiguration()
というメソッド。UIListContentConfigration
を返す。
が用意されています。
@available(iOS 14.0, tvOS 14.0, *)
extension UITableViewCell {
@available(iOS 14.0, tvOS 14.0, *)
@MainActor public var contentConfiguration: UIContentConfiguration?
@available(iOS 14.0, tvOS 14.0, *)
@MainActor public func defaultContentConfiguration() -> UIListContentConfiguration
}
ただ、上のように2つのものは型が違います。ちょっとややこしいのですが UIContentConfiguration
はプロトコルで、その具体的な型が UIListContentConfiguration
です。
@available(iOS 14.0, tvOS 14.0, *)
public protocol UIContentConfiguration {
//略
}
@available(iOS 14.0, tvOS 14.0, *)
public struct UIListContentConfiguration : UIContentConfiguration, Hashable {
//略
}
UIListContentConfigration
に設定できる項目は上に上げたAppleのドキュメントにいろいろ書いてます。
ちなみに
cell直下にある contentConfiguration
を直接設定することは出来ません。
いろいろなパターン (メイン文字、サブ文字、画像)
var cc = cell.defaultContentConfiguration()
cc.text = text[indexPath.row]
cc.secondaryText = subText[indexPath.row]
cc.image = UIImage(systemName: "baseball")
いろいろなパターン (フォント、色)
var cc = cell.defaultContentConfiguration()
cc.text = text[indexPath.row]
cc.textProperties.font = UIFont.systemFont(ofSize: 30.0)
cc.textProperties.color = teamColors[indexPath.row]
cc.secondaryText = subText[indexPath.row]
cc.secondaryTextProperties.color = teamColors[indexPath.row]
cc.image = UIImage(systemName: "baseball")
cc.imageProperties.tintColor = teamColors[indexPath.row]
cell.contentConfiguration = cc
default以外何があるの?
defaultContentConfiguration()
で作成してきましたが、それ以外も基本系を提供するstaticメソッドがあります。一例を挙げます。
cell
defaultに近いですな。
var cc = UIListContentConfiguration.cell()
subtitleCell
間がつまっている。
var cc = UIListContentConfiguration.subtitleCell()
valueCell
右端にセコンダリーテキストが移動。
var cc = UIListContentConfiguration.valueCell()
Discussion