我有一个横向集合视图。基本上,第一个显示的项目是"活动"项目。然后将按钮滑动到每个项目上。
我遇到的问题是我需要能够滚动最后一个项目以一直捕捉到前面。目前,当拖动到最后时,它不再与第一个单元格对齐。
很抱歉,如果我没有任何意义。基本上每个单元格的最左边框架都应该捕捉到collectionView的0,0。目前适用于前2个单元格。但在那之后,它达到了界限并且不允许它突然出现。我希望能够拖动并将最终单元格捕捉到0,0
谢谢!
在此处查看问题:
这是我的布局子类:
class UserFlowLayout: UICollectionViewFlowLayout {
required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) }
override init() {
super.init()
scrollDirection = .horizontal
itemSize = CGSize(width: 70, height: 90)
minimumInteritemSpacing = 15.0
minimumLineSpacing = 15.0
}
override func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint, withScrollingVelocity velocity: CGPoint) -> CGPoint {
guard let collectionView = collectionView else { return super.targetContentOffset(forProposedContentOffset: proposedContentOffset, withScrollingVelocity: velocity) }
var offsetAdjustment = CGFloat.greatestFiniteMagnitude
let horizontalOffset = proposedContentOffset.x + collectionView.contentInset.left
let targetRect = CGRect(x: proposedContentOffset.x, y: 0, width: collectionView.bounds.size.width, height: collectionView.bounds.size.height)
let layoutAttributesArray = super.layoutAttributesForElements(in: targetRect)
layoutAttributesArray?.forEach({ (layoutAttributes) in
let itemOffset = layoutAttributes.frame.origin.x
if fabsf(Float(itemOffset - horizontalOffset)) < fabsf(Float(offsetAdjustment)) {
offsetAdjustment = itemOffset - horizontalOffset
}
})
return CGPoint(x: proposedContentOffset.x + offsetAdjustment, y: proposedContentOffset.y)
}
}
答案 0 :(得分:0)
在我看来,它正试图向右滚动,而不是向右滚动。您需要加宽滚动视图以在右侧包含空白区域。
您当前的屏幕宽度似乎是4个单元格+ X,所以在最后一个单元格之后需要+ X的空格。