13

Safari タブや App Store 検索などのアプリに「カード」を実装したいと考えています。

画面中央に 1 枚のカードを表示し、前後のカードの一部を左右に表示します。(たとえば、App Store の検索や Safari のタブを参照してください)

を使用することにしましたがUICollectionView、ページ サイズを変更する (方法がわかりませんでした) か、独自のレイアウト サブクラスを実装する (方法がわからない) 必要がありますか?

何か助けてください。

4

6 に答える 6

2

@Mike M のSwift での回答…</p>

class CenteringFlowLayout: UICollectionViewFlowLayout {

    override func targetContentOffsetForProposedContentOffset(proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint {

        guard let collectionView = collectionView,
            let layoutAttributesArray = layoutAttributesForElementsInRect(collectionView.bounds),
            var candidate = layoutAttributesArray.first else { return proposedContentOffset }

        layoutAttributesArray.filter({$0.representedElementCategory == .Cell }).forEach { layoutAttributes in

            if (velocity.x > 0 && layoutAttributes.center.x > candidate.center.x) ||
                (velocity.x <= 0 && layoutAttributes.center.x < candidate.center.x) {
                candidate = layoutAttributes
            }
        }

        return CGPoint(x: candidate.center.x - collectionView.bounds.width / 2, y: proposedContentOffset.y)
    }

}
于 2016-08-17T13:07:34.807 に答える
1

Soroushの回答を少し編集すると、うまくいきました。ジェスチャーを無効にする代わりに私が行った唯一の編集:

[_collectionView addGestureRecognizer:_secretScrollView.panGestureRecognizer];
_collectionView.panGestureRecognizer.enabled = NO;

コレクションビューでスクロールを無効にしました:

_collectionView.scrollEnabled = NO;

ジェスチャを無効にすると、秘密のスクロールビュー ジェスチャも無効になります。

于 2013-10-21T09:08:21.037 に答える