1. ホーム
  2. ios

[解決済み] UICollectionView - 水平スクロール、水平レイアウト?

2022-02-19 22:46:55

質問

を持っています。 UIScrollView で、アイコンのグリッドをレイアウトしています。 iOSのSpringboardのレイアウトを想像してもらえば、かなり正解に近いと思います。 Springboardと同じように)水平方向にページ分割されたスクロールがあります。 しかし、どうやらレイアウトがおかしいようです。 上から下に向かって項目をレイアウトしているように見えます。 その結果、表示するアイテムの数の関係で、私の最後のカラムには2行しかありません。 スプリングボードで見るような、最後のページの最後の列が2つのアイテムになるようにしたいのですが。

これを実現するには UICollectionView とその関連クラスは? をカスタムで書かなければならないのでしょうか? UICollectionViewFlowLayout ?

解決方法は?

第1アプローチ

を使うのはどうでしょうか? UIPageViewController の配列と UICollectionViewControllers ? には、適切な数のアイテムを取得する必要があります。 UICollectionViewController しかし、それは難しいことではありません。スプリングボードと全く同じ外観を得ることができます。

第二のアプローチ

私はこれを考えたが、私の意見では、あなたは設定する必要があります。

self.collectionView.pagingEnabled = YES;

をサブクラス化し、独自のコレクションビューレイアウトを作成します。 UICollectionViewLayout . カスタムレイアウトオブジェクトから self.collectionView ということで、コレクションビューの frame , numberOfSectionsnumberOfItemsInSection: . この情報を使って、セルの framesprepareLayout ) と collectionViewContentSize . カスタムレイアウトの作成に関する記事はこちらです。

第3のアプローチ

カスタムレイアウトを作成しなくても、これ(またはその近似値)を行うことができます。追加 UIScrollView を空白ビューで表示し、ページングを有効に設定します。スクロールビューに、コレクションビューを追加します。そして、それに幅の制約を追加し、いくつのアイテムを持っているかをコードでチェックし、それに constant を正しい値に設定します。 (self.view.frame.size.width * numOfScreens) . 以下はその様子です(セル上の数字が indexPath.row ): https://www.dropbox.com/s/ss4jdbvr511azxz/collection_view.mov セルの並び方に不満があるのなら、1.か2.