UICollectionViewは、iOSアプリケーションの開発で使用される、コンテンツをグリッド状に表示するためのクラスです。Appleが提供するUIKitフレームワークの一部です。
UICollectionViewの導入はiOS 6(2012年リリース)でした。それまでのUIKitでは、コンテンツをリスト状に表示するUITableViewがありましたが、グリッド状に表示するには工夫が必要でした。UICollectionViewの導入によって、コンテンツをグリッド状に表示することが容易になりました。
以降、UIKitの重要なコンポーネントのひとつとして、iOSのバージョンアップに伴い機能やパフォーマンスが向上しており、現在でも引き続きアップデートされています。コンテンツを単にグリッド状に配置するだけでなく、レイアウトが柔軟に行えるのが特徴です。
しかし、その柔軟性ゆえに、実装の難易度は高めです。また、iOS 13や14でレイアウトやデータソースの新しい実装方法が追加されて便利になりましたが、それ以前とは別の考え方が必要になります。現在のUICollectionViewでは古い実装方法と新しい実装方法が混在していることもあって、全体像を把握するのが難しいと感じる方も多いのではないでしょうか。
そこで本書では、UICollectionViewの基本的な考え方を解説します。特に、iOS 13や14で導入された新しい実装方法を重点的に取り上げ、効率的で柔軟なレイアウトやデータソースの管理方法を解説します。
本書を通じて、iOSアプリ開発者がUICollectionViewを理解し効果的に活用できるようになることを目指しています。
UICollectionViewは、コンテンツをグリッド状またはリスト状に表示するためのクラスです。データを柔軟かつ効率的に表示できます。
以下のような特徴を持ちます。
これらの機能を組み合わせることで、UICollectionViewはさまざまなシーンでのデータ表示に適したUIコンポーネントとなっています。また、UICollectionViewはUIKitフレームワークの一部であるため、iOSアプリケーション開発において幅広く利用されています。
UICollectionViewを理解するために、まずはできるだけ小さな実装から始めることにします。なお、本章で説明する実装はiOS 14以降で動作するものです。
できるだけ小さな実装と言っても、UICollectionViewを構成する要素は多いため、実装もある程度は大きくなってしまいます。大きく分けると、実装は次の4つのパートからなります。
本章ではこれらを順に説明します。
まずは UICollectionView
を含む画面を作ります。ここでは、その画面のViewControllerクラスを MyViewController
という名前で作ります。また、画面に表示するデータを取得するためのクラス MyItemRepository
も作ります。
UICollectionView
を生成するには、UICollectionViewLayout
を与える必要があります。ここでは、makeCollectionViewLayout()
メソッドで生成しています。これは後述します。
画面上に UICollectionView
を配置するためにAuto Layoutを使うことにします。setupConstraints()
メソッドで制約を設定しています。
UICollectionView
に表示する内容はプロパティ dataSource
で与えます。ここでは、MyCollectionViewDataSource
クラスとして実装しています。これは後述します。
その後、reloadData()
メソッドを呼ぶことで dataSource
にセットされた値が表示されます。
MyCollectionViewDataSource
に渡している MyItemRepository
の実装は次のとおりです。実際のアプリではデータをAPIやDBから取得することになるでしょうが、今回は簡単のためにメモリ上にデータを生成しています。