Swift - 如何以编程方式访问 collectionView 的 targetContentOffset.pointee.y
Swift -How to programmatically access collectionView's targetContentOffset.pointee.y
当用户滑动时,我 运行 scrollViewWillEndDragging
中的一些代码,我需要 targetContentOffset.pointee.y
来完成它:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
let yAxis = targetContentOffset.pointee.y
let visibleItem = Int(yAxis / collectionView.frame.height)
// do something with visibleItem based on cell's current vertical scroll position...
}
问题是我还进行了一些自动滚动,用户无需滑动,简历就会自动滚动。我仍然需要访问 targetContentOffset.pointee.y
以便我可以对 visibleItem 做一些事情,但我使用的方法不会在自动滚动时触发。
如何以编程方式访问 targetContentOffset.pointee.y?
你可以试试
let index = IndexPath(item: xyz, section: 0)
collectionView.scrollToItem(at:index, at: .centeredVertically, animated: true)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
if let cell = collectionView.cellForItem(at:index) {
let frame = collectionView.convert(cell.frame,nil)
}
}
当用户滑动时,我 运行 scrollViewWillEndDragging
中的一些代码,我需要 targetContentOffset.pointee.y
来完成它:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
let yAxis = targetContentOffset.pointee.y
let visibleItem = Int(yAxis / collectionView.frame.height)
// do something with visibleItem based on cell's current vertical scroll position...
}
问题是我还进行了一些自动滚动,用户无需滑动,简历就会自动滚动。我仍然需要访问 targetContentOffset.pointee.y
以便我可以对 visibleItem 做一些事情,但我使用的方法不会在自动滚动时触发。
如何以编程方式访问 targetContentOffset.pointee.y?
你可以试试
let index = IndexPath(item: xyz, section: 0)
collectionView.scrollToItem(at:index, at: .centeredVertically, animated: true)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) {
if let cell = collectionView.cellForItem(at:index) {
let frame = collectionView.convert(cell.frame,nil)
}
}