【iOSDC Japan 2023 レポート】「UIKit ベースの Custom UIContentConfiguration API を用いた複雑なカスタムセルの作り方」を聞いてきた。

2023.09.02

はじめに

年に一度のiOSエンジニアの為のお祭り iOSDC Japan 2023に参加しています。

せっかくなので、参加したセッションのレポートを書きたいと思います。

UIKit ベースの Custom UIContentConfiguration API を用いた複雑なカスタムセルの作り方

登壇者

概要

iOS 14 からUICollectionViewのセルのカスタマイズ方法にConfigurationというAPIが追加されました。

これまでカスタムセルはサブクラスを作成して実装していました。Configurationにより、セルレイアウトと外観を分離し再利用しやすいComposableなAPIの管理ができます。

また縦方向のリスト形式の例では削除や並び替えといった機能と滑らかな表示体験が提供でき、安全にOSの機能を考慮した複雑なカスタムセルが実装できます。

本セッションでは日本経済新聞社の紙面ビューアーアプリで実際に導入したUIKitベースのカスタム例を紹介します。

UIKitベースのパターンは実装例が比較的少ない一方、依然として重要な選択肢です。SwiftUIベースでは困難な制約やリスト表示のパフォーマンス観点などを踏まえ、仕組みからUIKitとSwiftUIの理解を深めます。

引用: fortee

資料

感想

今回のセッションタイトルにもあるUIContentConfigurationは、データ構成をベースにViewのコンテンツとスタイルを更新できるもので、新しいConfigurationをViewにセットすると以前のセルの状態を引き継がないという素晴らしい利点があります。

dequeueReusableCell(withIdentifier:)を使用する仕組みでは、前のデータ状態を把握する必要があったり、データの状態が引き継がれるのでリセットする必要がある。リセット忘れると表示されるデータがおかしくなるといった不具合が発生します。

UITableViewUICollectionViewを初めて触れた時に、再利用の仕組みを理解しておらず、表示されているデータがおかしい不具合に遭遇したのを思い出しました?

UIListContentConfigurationUIListContentViewを使って、データの中身と入れ物を分離できる構造にできる為、安全にUIを構築できるようになります。

自分自身はセル描画では、Identifierを使用する方法が多かったですが、UIContentConfigurationはiOS 14から使用できるので積極的に採用していきたいと感じました。

おわりに

いろんな方の発表を見ると、技術の面ではもちろんですが、発表者の身振り手振りや、スライドの作り方もとても勉強になります。

iOSDC 2023 レポート関連