UICollectionViewを活用した、快適で動的なレイアウト作成 by tatsubee

iOSDC Japan 2024
レギュラートーク(20分)

UICollectionViewを活用した、快適で動的なレイアウト作成

shoryu927 tatsubee shoryu927

SwiftUIが登場してからおよそ5年が経ちましたが、複雑なレイアウトを表現する場面では、依然としてUICollectionViewが力強い味方です。

特に、Compositional LayoutとDiffable DataSourceの導入により、App Storeのような複雑なレイアウトも簡潔に、かつ容易に実装することが可能になりました。
セクションの順番さえ決まっていれば、その特定のセクションに対してアイテムのグルーピング方法を適切に指定するだけで、複雑なレイアウトを表現することができます。

しかし、セクションが不定の場合はどうでしょうか?たとえば、セクションによっては大きな単体のCellを表示したり、複数のCellを横方向に並べてスクロールさせたいが、その順序がサーバーサイドの都合により変化するような場合です。
UICollectionViewCompositionalLayoutでは、セクションに対して直接表現方法を指定するため、順序が不定では実現が難しいかと思われがちです。
しかし、セクションのenumに一工夫することで、このような動的なレイアウト生成も実現することができました。

本セッションでは、このように「受け取るデータの種類によってCellを自由に出し分ける必要がある場面」での、我々の成功パターンについてお話しします。