2016-05-26 20 views
0

PageControllerをUIScrollViewに置き換えるという考えは、UIScrollViewは次/前の項目にスクロールして停止するだけです。私はいくつかの解決策を見つけましたが、targetContentOffsetForProposedContentOffsetを使用する必要があることを理解していましたが、ユーザーが高速でスクロールしてもCGPointが返すべきことと次の項目を停止する方法がわかりません。UICollectionView次の項目へスクロール

override func targetContentOffsetForProposedContentOffset(proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint { 
    return CGPoint(x: 0, y: 0) 
    } 

答えて

0

UIScrollViewを使用すると、ページングを有効にすることができます。このプロパティはpagingEnabledと呼ばれます。つまり、コンテンツのサイズを適切に設定すれば、全幅(または高さ)にスナップされます。

つまり、幅が100、高さが200ページの2ページが必要な場合は、コンテンツサイズを幅の場合はCGSize 200、高さの場合は200に設定します。スクロール・ビューは、スナップおよびページングを処理します。

goToPage(2)のようなページに移動する機能が必要な場合。次に、CGRect(pageNumber * scrollView.width(またはページ幅)、1の高さ)を使用してUIScrollViewのscrollRectToVisibleメソッドを呼び出す必要があります。

Swiftを使用しているようです。

+0

私はあなたがオプションをいくつか持っていることを忘れてしまったことを忘れてしまいました。スクロールビューへのユーザーインタラクションを停止し、メインビューにジェスチャーを追加すると、次/前のページに移動する方法がトリガーされます。または、3ページを作成し、中央を表示することができます。アニメーションが終了したら、現在のビューを中央に移動し、次のビューまたは前のビューをロードします。効果的に無限のページングを作成します。 – mashdup

+0

topCollectionView.pagingEnabled = true; topCollectionView.contentSize = CGSize(幅:UIScreen.mainScreen()。bounds.width、height:300.0)。私はこれを追加しましたが、ページングは​​動作しますが、セル全体ではなく、いくつかのランダムな点で停止するので、前のセルと次のセルの両方を見ることができます – JuicyFruit

+0

UIScreen.mainScreen()。bounds.widthは1ページだけを意味します。テストとして、UIScreen.mainScreen()。bounds.width * 5を試して、ページングかどうかを確認してください。これは正しい方向を指すはずです – mashdup

0

以下のコードを使用してください。あなたの問題は解決されます。

YourScrollView.pagingEnabled = YES; 
関連する問題