14

私は持っていてUICollectionView、それにはかなりの量がありUICollectionViewCellsます。UICollectionViewセルをタップしたときにセルを中央にスクロールしたい。私の懸念は、最後のセルまたは一番上のセルをタップしても、コレクション ビューの中央に移動する必要があることです。

と オフセットを設定しようcontentInsetsとしましたが、うまくいかないようです。選択時にコンテンツのサイズを変更し、スクロールが始まったら元に戻す必要があると思います。

4

4 に答える 4

10

このバグは、スクロール ビューのcontentInsetと の間の不適切な相互作用が原因のようUICollectionViewFlowLayoutです。私のテストでは、問題を解決するのlayout.sectionInsetではなく、設定collectionView.contentInsetすることで解決しました。

上記の受け入れられた回答に基づいて、回避策を削除し、次のように変更します。

[collectionView setContentInset:UIEdgeInsetsMake(collectionViewHeight / 2, 0, collectionViewHeight / 2, 0)];

[layout setSectionInset:UIEdgeInsetsMake(collectionViewHeight / 2, 0, collectionViewHeight / 2, 0)];
于 2014-03-25T00:38:12.060 に答える
2

メソッドを使用scrollToItemAtIndexPathして、選択した(タップした)セルをUICollectionViewの中央に配置できます

[collectionView scrollToItemAtIndexPath:indexPath
                       atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally
                               animated:true];

UICollectionViewScrollPositionCenteredVertically垂直方向の中央位置に使用できます

于 2016-12-29T11:47:56.760 に答える