プログラムで UICollectionView を使用しています。
フレームを次のように設定しました。
UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 3000) collectionViewLayout:flowLayout];
私UICollectionViewFlowLayout
のセクションインセットは次のように設定されています:
flowLayout.sectionInset = UIEdgeInsetsMake(20.0, 20.0, 100.0, 20.0);
私も1セクションしか持っていません。
コレクション ビューがスクロールするかどうかを確認するために、高さを 3,000 に設定しましたが、スクロールしません。新しいアイテムを挿入したときにコレクション ビューが上下にスクロールしないように見えるので、そのように設定しています。
UICollectionView
からサブクラス化されているUIScrollView
ため、スクロール ビューのコンテンツ サイズをリセットし続けることができます。これは正しく機能しますか?
唯一の問題は、各行にいくつのアイテムがあるかなど、すべてのアイテムのサイズがわかっている場合に機能することです。
各アイテムのサイズが異なる場合、各行のサイズはどのように確認できますか? すべての行サイズを追加し、コンテンツ サイズの高さをself.collectionView
.
編集
上記の私の提案であるコンテンツ サイズのリセットでさえ、正しく機能しません! コレクションビューを更新するときに、次のことを試しました。
int numberOfRows = self.dataArray.count / 3;
self.collectionView.contentSize = CGSizeMake(self.view.frame.size.width, (numberOfRows * 200) + 300);
これは非常に醜いですが。これは、すべての画像のサイズが 200x200px で、1 行あたり 3 つの画像に収まると想定しているためです (したがって、3 で除算します)。
さらに、私が持っている+300でも、最後の行は約3/4しか見えず、すべてではありません. さらにスクロールする必要があり、それを見ることができますが、再び 3/4 に戻ります。スクロールして更新するようなもので、ドラッグした場合にのみビューが移動し、離れると元の場所に戻ります。なぜこうなった?Apple の設計UICollectionView
が貧弱だっただけなのだろうか?これは少しばかげています... UITableViews は、コンテンツに応じてスクロールを自動的に調整します。