在我的UIViewController
中,我有一个UICollectionView
。委托设置正确。一切正常。 isPagingEnabled
设置为true
。但是现在我想更改我在scrollViewWillEndDragging
中尝试过的分页位置,因为在文档中它说:
您的应用程序可以更改targetContentOffset参数的值,以调整滚动视图完成其滚动动画的位置。
此函数被正确调用,但是唯一的事情发生在我要设置新的端点时,UICollectionView
滚动到0。
这是我的代码:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
print(scrollView.contentOffset, "actual Offset")
print(targetContentOffset.pointee, "future offset")
targetContentOffset.pointee = CGPoint(x: 100, y: 0)
print(targetContentOffset.pointee, "new future offset")
}
在print(“新的将来的偏移量”)处,它会打印正确的值。因此,似乎该函数之后的值发生了变化。
答案 0 :(得分:1)
func targetContentOffset(forProposedContentOffset proposedContentOffset: CGPoint,
withScrollingVelocity velocity: CGPoint) -> CGPoint
说明:
如果您希望滚动行为捕捉到特定边界,则可以 可以覆盖此方法并使用它来更改 停。例如,您可能使用此方法始终停止滚动 在项目之间的边界上,而不是停在 一个项目。
重写此布局方法,而不是直接更改targetContentOffset的值。
如果希望滚动行为捕捉到特定边界,则可以覆盖此方法,并使用它来更改停止点。例如,您可以使用此方法始终停止在项目之间的边界上滚动,而不是在项目中间停止滚动。
文档: https://developer.apple.com/documentation/uikit/uicollectionviewlayout/1617729-targetcontentoffset