我試圖使用collectionView實現類似輪播的輪播。我實施了UICollectionView
並將其設置爲水平顯示單元格。UICollectionView - 一次水平分頁與一個單元格
唯一的問題是,我如何只允許一個單元格的外觀並將該單元格居中在屏幕上。
注意:啓用尋呼功能。
我發現這個代碼,嘗試過,但遺憾的是沒有工作
碼參考: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單元格 –
不同時,會在設置故事板中的單元格寬度時出現問題。 –
我做過,第一個和最後一個單元格沒有居中的原因是什麼? –