我正在尝试在 UICollectionView 上实现缩放效果。为了得到想要的效果,我想做两件事:
- 有效缩放布局
- 确保缩放从两个手指进行捏合的任何 pt 处“伸展”出来。
第一部分是直截了当的,现在我进入第二部分。
我的策略是在手势开始时找到从 collectionView 的内容边缘到捏合中心的比例距离,然后确保“比例点”(实际值会根据比例发生变化)保持与随着触摸位置的变化,捏合中心。
无论如何,执行此操作的代码是这样的(不包括缩放代码)
CGPoint pinchCenter = [pincher locationInView:self.collectionView];
CGFloat ContentXToAlignWithPinch = self.collectionView.contentSize.width * proportionalXInContent;
CGFloat contentOffsetX = ContentXToAlignWithPinch - pinchCenter.x;
[self.collectionView setContentOffset:CGPointMake(contentOffsetX, 0) animated:NO];
NSLog(@"pinchCenter.x is %", pinchCenter.x);
但是当我注销 pinchCenter.xi 时得到这个:
2013-05-10 11:42:08.015 DMMS[20189:907] pinchCenter.x is 1548.000000
2013-05-10 11:42:08.036 DMMS[20189:907] pinchCenter.x is 203.000000
2013-05-10 11:42:08.041 DMMS[20189:907] pinchCenter.x is 1560.000000
2013-05-10 11:42:08.062 DMMS[20189:907] pinchCenter.x is 204.000000
2013-05-10 11:42:08.083 DMMS[20189:907] pinchCenter.x is 1570.000000
2013-05-10 11:42:08.102 DMMS[20189:907] pinchCenter.x is 212.000000
2013-05-10 11:42:08.120 DMMS[20189:907] pinchCenter.x is 1588.000000
2013-05-10 11:42:08.137 DMMS[20189:907] pinchCenter.x is 216.000000
2013-05-10 11:42:08.156 DMMS[20189:907] pinchCenter.x is 1593.000000
2013-05-10 11:42:08.175 DMMS[20189:907] pinchCenter.x is 218.000000
为什么这个 pinchCenter.x 会这样跳来跳去?我的假设是否不正确,即 uipinch 手势识别器上的 locationInView 给出了捏的中间值?
非常感谢任何帮助