如何在Swift中更改UICollectionView的targetContentOffset?

时间:2018-11-17 18:04:53

标签: ios swift uiscrollview uicollectionview

在我的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(“新的将来的偏移量”)处,它会打印正确的值。因此,似乎该函数之后的值发生了变化。

1 个答案:

答案 0 :(得分:1)

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

说明:

  

如果您希望滚动行为捕捉到特定边界,则可以   可以覆盖此方法并使用它来更改   停。例如,您可能使用此方法始终停止滚动   在项目之间的边界上,而不是停在   一个项目。

重写此布局方法,而不是直接更改targetContentOffset的值。

如果希望滚动行为捕捉到特定边界,则可以覆盖此方法,并使用它来更改停止点。例如,您可以使用此方法始终停止在项目之间的边界上滚动,而不是在项目中间停止滚动。

文档https://developer.apple.com/documentation/uikit/uicollectionviewlayout/1617729-targetcontentoffset