【发布时间】:2012-11-23 14:33:25
【问题描述】:
我正在创建一个滚动视图来显示一个非常大的视图,并且我需要滚动和缩放功能(就像图像查看器一样)。以下是我采取的步骤:
- 在界面构建器中,我已将滚动查看器置于视图控制器中。
- 我在滚动查看器中添加了捏合手势识别器。
- 我已将手势识别器的操作连接到处理手势事件的代码。
- 加载视图控制器时,我将视图的原点更改为中心(
viewer是我的滚动查看器):self.viewer.contentOffset = CGPointMake(384, 512); - 在我的处理程序代码中,我这样处理事件:
(startScale开头是1.0)
- (IBAction)handlePinch:(UIPinchGestureRecognizer *)sender {
if(sender.state == UIGestureRecognizerStateEnded){
startScale *= sender.scale;
}else{
float result = sender.scale * startScale;
self.viewer.transform = CGAffineTransformMakeScale(result, result);
}
}
当我运行应用程序时,手势被识别并且缩放工作正常,但是,整个视图相对于屏幕的0,0 点(左上角)进行缩放。我希望它相对于我应用手势的中间点进行缩放,就像放大照片的自然捏合手势一样。
我也尝试设置self.viewer.frame 的来源,但没有任何改变。我搜索了这个问题,发现了这些:
How to set a UIView's origin reference?(已经试过了)
https://stackoverflow.com/questions/13163279/pinch-punch-gestures-center(关于我的问题,但未得到答复)
UIPinchGestureRecognizer for zooming and panning an image in xcode(看起来有点矫枉过正,对我来说太复杂了,我不确定这是否真的有助于我的情况)
如何使用滚动视图实现自然捏合,我做错了什么?
谢谢, 可以。
【问题讨论】:
标签: objective-c ios uiview uigesturerecognizer uipinchgesturerecognizer