"targetContentOffset"UICollectionViewFlowLayout无法正常工作

Aru*_*un_ 2 ios uicollectionview uicollectionviewlayout swift swift3

我要求在纵向模式下保持UICollectionViewCell中心对齐.
最终结果应该是: 动画

我正在使用此代码执行此操作:

override public func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint {

var layoutAttributes: Array = layoutAttributesForElements(in: collectionView!.bounds)!

if layoutAttributes.count == 0 {
    return proposedContentOffset
}

var firstAttribute: UICollectionViewLayoutAttributes = layoutAttributes[0]

for attribute: UICollectionViewLayoutAttributes in layoutAttributes {
    if attribute.representedElementCategory != .cell {
        continue
    }

    if((velocity.x >= 0.0 && attribute.center.x > firstAttribute.center.x) ||
        (velocity.x <= 0.0 && attribute.center.x < firstAttribute.center.x)) {
        firstAttribute = attribute;
    }
}

return CGPoint(x: firstAttribute.center.x - 

collectionView!.bounds.size.width * 0.5, y: proposedContentOffset.y)
}
Run Code Online (Sandbox Code Playgroud)

这适用于所有单元格,除了最后一个单元格在滚动时没有居中对齐.

实际结果:

在此输入图像描述

有什么方法可以解决这个问题吗?

mmk*_*mmk 5

我发现,如果我设置

collectionView.isPagingEnabled = true
Run Code Online (Sandbox Code Playgroud)

它将破坏中心单元设置.一旦我将其关闭,一切正常