Safari タブや App Store 検索などのアプリに「カード」を実装したいと考えています。
画面中央に 1 枚のカードを表示し、前後のカードの一部を左右に表示します。(たとえば、App Store の検索や Safari のタブを参照してください)
を使用することにしましたがUICollectionView
、ページ サイズを変更する (方法がわかりませんでした) か、独自のレイアウト サブクラスを実装する (方法がわからない) 必要がありますか?
何か助けてください。
Safari タブや App Store 検索などのアプリに「カード」を実装したいと考えています。
画面中央に 1 枚のカードを表示し、前後のカードの一部を左右に表示します。(たとえば、App Store の検索や Safari のタブを参照してください)
を使用することにしましたがUICollectionView
、ページ サイズを変更する (方法がわかりませんでした) か、独自のレイアウト サブクラスを実装する (方法がわからない) 必要がありますか?
何か助けてください。
@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)
}
}
Soroushの回答を少し編集すると、うまくいきました。ジェスチャーを無効にする代わりに私が行った唯一の編集:
[_collectionView addGestureRecognizer:_secretScrollView.panGestureRecognizer];
_collectionView.panGestureRecognizer.enabled = NO;
コレクションビューでスクロールを無効にしました:
_collectionView.scrollEnabled = NO;
ジェスチャを無効にすると、秘密のスクロールビュー ジェスチャも無効になります。