私はcollectionViewを使用してカルーセルのような効果を実装しようとしています。私はUICollectionView
を実装し、セルを横に表示するように設定しました。UICollectionView - 一度に1つのセルで横方向のページング
唯一の問題は、1つのセルだけを表示し、そのセルを画面の中央に配置する方法です。
注:ページングは有効です。
私は、このコードを見つけ、それを試してみましたが、悲しいことに
コードの参照動作しませんでした:コード上の中央のセルについてCreate a Paging UICollectionView with Swift
override func targetContentOffsetForProposedContentOffset(proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint {
if let cv = self.collectionView {
let cvBounds = cv.bounds
let halfWidth = cvBounds.size.width * 0.5;
let proposedContentOffsetCenterX = proposedContentOffset.x + halfWidth;
if let attributesForVisibleCells = self.layoutAttributesForElementsInRect(cvBounds) {
var candidateAttributes : UICollectionViewLayoutAttributes?
for attributes in attributesForVisibleCells {
// == Skip comparison with non-cell items (headers and footers) == //
if attributes.representedElementCategory != UICollectionElementCategory.Cell {
continue
}
if let candAttrs = candidateAttributes {
let a = attributes.center.x - proposedContentOffsetCenterX
let b = candAttrs.center.x - proposedContentOffsetCenterX
if fabsf(Float(a)) < fabsf(Float(b)) {
candidateAttributes = attributes;
}
}
else { // == First time in the loop == //
candidateAttributes = attributes;
continue;
}
}
return CGPoint(x : candidateAttributes!.center.x - halfWidth, y : proposedContentOffset.y);
}
}
// Fallback
return super.targetContentOffsetForProposedContentOffset(proposedContentOffset)
}
セル幅がcollectionViewの幅と同じ場合、答えは完全に機能しますが、それ以外の場合はセルの幅がcollectionViewセルと同じではない場合に問題があります。 –
ストーリーボードでセル幅を設定します。 –
私はそうしました、なぜなら、最初と最後のセルは何の理由もないのですか? –