我正在努力将UICollectionView
滚动到我使用捏合手势的地方。他们有两种方法可以解决这个问题:
第一个应该是最好的,但确实不起作用。
let pinchCenter = CGPoint(x: gesture.location(in: collectionView).x - collectionView.bounds.midX,
y: gesture.location(in: collectionView).y - collectionView.bounds.midY)
if let index = collectionView.indexPathForItem(at: pinchCenter) {
collectionView.scrollToItem(at: index, at: .centeredHorizontally, animated: true)
}
正在做什么,它正在创建一个CGPoint
,它正好位于捏合手势(两个手指)的中间,但IndexPath
中没有UICollectionView
,所以它不会命中scrollToItem
。
第二个选项是仅使用:
let center = gesture.location(ofTouch: 1, in: collectionView)
ofTouch
如果我们指向1,那么右手将被拿走,如果是2,那么它仍然不是我想要的,它不是UICollectionView
的居中位置。 / p>
任何想法如何才能提高第二选项的精确度或首先使用?
编辑
第三个选项是使用线条中心的模式计算点数:
(x1+x2/2, y1+y2/2)
将会是:
let leftPinch = gesture.location(ofTouch: 1, in: collectionView)
let rightPinch = gesture.location(ofTouch: 0, in: collectionView)
let avg = CGPoint(x: (leftPinch.x + rightPinch.x) / 2, y: (leftPinch.y + rightPinch.y) / 2)
let leftPinch
NSInternalInconsistencyException
将会崩溃。
提前致谢!