Ios 收缩缩放始终使用左上角作为原点

Ios 收缩缩放始终使用左上角作为原点,ios,objective-c,xcode,uiimageview,uigesturerecognizer,Ios,Objective C,Xcode,Uiimageview,Uigesturerecognizer,我添加了一个比主视图小的UIImageView,并在其中添加了两个手势: - (IBAction)pinch:(UIPinchGestureRecognizer *)recognizer { recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale); recognizer.scale = 1; } - (IBAc

我添加了一个比主视图小的UIImageView,并在其中添加了两个手势:

- (IBAction)pinch:(UIPinchGestureRecognizer *)recognizer
{
    recognizer.view.transform = CGAffineTransformScale(recognizer.view.transform, recognizer.scale, recognizer.scale);
    recognizer.scale = 1;
}
- (IBAction)Pan:(UIPanGestureRecognizer *)recognizer
{
    CGPoint translation = [recognizer translationInView:self.view];
    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
                                         recognizer.view.center.y + translation.y);
    [recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}

虽然“平移”可以完美地在图像周围拖动,但音高也不例外。每次放大或缩小时,UIImageView的原点都会捕捉回我在情节提要中选择的位置。我错过了什么?我从一个示例中复制了代码,在该示例中,它的工作方式与预期一样完美。

因此,诀窍在于我使用的示例禁用了“使用自动布局”。自动布局功能可防止代码将新位置应用于视图(有时)。由于XCode 4.3自动布局功能是自动启用的(以前没有),因此当您一步一步地重建示例时,如果您下载的示例足够旧,它的行为将与示例不同。

您可以在视图中添加识别器的位置发布代码吗?很遗憾,没有,因为我使用了情节提要。我生成了一个单视图应用程序。添加UIImageView,然后我将挤压手势拖到UIImageView上,然后将手势与代码连接起来。我选中了“启用用户交互”。就这些。好的,我复制并粘贴了你的代码。通过将手势识别器拖动到我要缩放/拖动的视图上,在情节提要中添加了手势识别器,所有操作均按预期进行。那里还有其他手势识别器吗?