UICollectionView の水平ページングが中央に配置されない 質問する

UICollectionView の水平ページングが中央に配置されない 質問する

水平スクロールのコレクションビューがあり、各セルのサイズはビューと同じです。コレクションビューをページングしても、セルごとにページングされません。セルが画面の中央にありません。これを修正するためにいろいろ試しましたが、うまくいきませんでした。問題のビデオを以下に示します。https://www.youtube.com/watch?v=tXsxWelk16w何か案は?

ベストアンサー1

項目間のスペースを削除します。水平スクロール コレクション ビューの場合は、最小行間隔を 0 に設定します。これは、インターフェイス ビルダーまたはUICollectionViewDelegateFlowLayoutプロトコル メソッドを使用して実行できます。

- (CGFloat)collectionView:(UICollectionView *)collectionView 
                   layout:(UICollectionViewLayout *)collectionViewLayout 
        minimumLineSpacingForSectionAtIndex:(NSInteger)section {
    return 0;    
}

ここに画像の説明を入力してください

もう 1 つの方法は、アイテム間の水平方向のスペースの値に対して、セルの幅を collectionView の幅よりも小さくすることです。次に、アイテム間の水平方向のスペースの半分に等しい左と右のインセットを持つセクション インセットを追加します。たとえば、最小の行間隔は 10 です。

- (CGFloat)collectionView:(UICollectionView *)collectionView
                   layout:(UICollectionViewLayout *)collectionViewLayout
        minimumLineSpacingForSectionAtIndex:(NSInteger)section {
    return 10;
}

- (CGSize)collectionView:(UICollectionView *)collectionView 
                  layout:(UICollectionViewLayout *)collectionViewLayout 
  sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    return CGSizeMake(collectionView.frame.size.width - 10, collectionView.frame.size.height);
}

- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView 
                        layout:(UICollectionViewLayout *)collectionViewLayout 
        insetForSectionAtIndex:(NSInteger)section {
    return UIEdgeInsetsMake(0, 5, 0, 5);
}

ここに画像の説明を入力してください

3番目の方法: メソッドで collectionView のスクロール操作を行うscrollViewDidEndDecelerating::

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    if (scrollView == self.collectionView) {
        CGPoint currentCellOffset = self.collectionView.contentOffset;
        currentCellOffset.x += self.collectionView.frame.size.width / 2;
        NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:currentCellOffset];
        [self.collectionView scrollToItemAtIndexPath:indexPath
                                    atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally
                                            animated:YES];
    }
}

ここに画像の説明を入力してください

おすすめ記事