紧缩时收集中心

时间:2017-09-10 16:55:11

标签: swift uicollectionview

我正在努力将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将会崩溃。

提前致谢!

0 个答案:

没有答案