4

UICollectionView のカスタム ページングを作成しています。下部のセルの一部を画面の端からはみ出させたいのですが、通常のページングでは、次のページにスクロールすると、ページの下部にあるセルの半分が表示されていた場合にのみ表示されます残りの半分は次のページで。セルを端からぶら下げたいのですが、ページングを停止して、画面からぶら下がっているセルがはっきりと見えるようにします。

したがって、これを行うために、関数をオーバーライドしました - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset

1、2 秒ドラッグすると、期待どおりに動作するように見えますが、ページングが有効になっているときにうまく機能する「フリック」をエミュレートしようとしています。UICollectionView をフリックすると、アニメーションではなく targetContentOffset にジャンプします。

これを防ぐにはどうすればよいですか?

これが私のコードです:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {

    if(targetContentOffset->y < 400) {
        targetContentOffset->y = 0;
        return;
    }

    int baseCheck = 400;

    while(baseCheck <= 10000) {
        if(targetContentOffset->y > baseCheck && targetContentOffset->y < baseCheck + 800) {
            targetContentOffset->y = (baseCheck + 340);
            return;
        }
        baseCheck += 800;
    }

    targetContentOffset->y = 0;
}
4

2 に答える 2