【问题标题】:Pinch to zoom always use topleft corner as origin捏缩放始终使用左上角作为原点
【发布时间】:2014-08-04 18:03:23
【问题描述】:

我添加了一个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 的原点都会回到我在情节提要中选择的位置。我想念什么?我从示例 here 复制了代码,它按预期完美运行。

【问题讨论】:

  • 您可以将代码发布到视图中添加识别器的位置吗?
  • 很遗憾没有,因为我使用 Storyboard。我生成了一个单视图应用程序。添加一个 UIImageView,然后将 Pinch Gesture 拖到该 UIImageView 上,然后将 Gesture 与代码连接起来。我检查了“启用用户交互”。就是这样。
  • 好的,我复制并粘贴了您的代码。通过将手势识别器拖到我想要缩放/拖动的视图上,在情节提要中添加了手势识别器,一切都按预期工作。你那里有其他手势识别器吗?

标签: ios objective-c xcode uiimageview uigesturerecognizer


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-30
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2013-08-03
    相关资源
    最近更新 更多