プログラムでUICollectionViewを使用しています。セクションインセットを設定するときに、FlowLAyoutがスクロールしないUICollectionView
私は次のように、それは、フレームの設定している:私はまた、唯一の1つのセクションを持って
flowLayout.sectionInset = UIEdgeInsetsMake(20.0, 20.0, 100.0, 20.0);
:
UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 3000) collectionViewLayout:flowLayout];
私UICollectionViewFlowLayout
はとして設定セクションのインセットを持っています。
高さを3,000に設定して、コレクションビューがスクロールするかどうかを確認しましたが、表示しません。コレクションビューは新しいアイテムを挿入するときに上下にスクロールしないように設定しています。
UICollectionView
はUIScrollView
からサブクラス化されています。つまり、スクロールビューのコンテンツサイズをリセットしておくことができます。これは適切に機能しますか?
唯一の問題は、各行にいくつのアイテムが含まれているかなど、すべてのアイテムのサイズが分かっていれば、これが機能するということです。
各アイテムのサイズが異なる場合、どのように各行のサイズがわかりますか?すべての行サイズを追加し、コンテンツサイズの高さをself.collectionView
に増やすには、これが必要です。
EDIT
以上であっても私の提案、コンテンツのサイズをリセットし、正常に動作しません!私のコレクションビューを更新するとき、私は次のことを試してみました:
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に戻る。リフレッシュするスクロールのようなものです。ドラッグするとビューが移動するだけで、ビューを元の位置に戻します。なぜこうなった?アップルがUICollectionView
をあまりにも貧弱に設計したことだけですか?これはちょっとばかげたことです... UITableViewsはコンテンツに応じてスクロールを自動的に調整します。
これは私の解決策でした。私は複数の列のレイアウトでアイテム間の垂直方向の隙間を取り除いたカスタムフローレイアウトを使用していました。私はSimonが提案したようにするまで、アイテムの半分しか手に入れませんでした。私が問題があった理由は、照会されたアイテムの数が標準レイアウトに基づいているということです。 –