Swift - 在图像而非视图上使用手势识别器

Swift - Using gesture recognizers on an image but not the view

我有一个包含单个图像的 UIImageView。在故事板中,我在图像视图上放置了一个平移手势识别器。它有效,但是,我只能重新定位整个 UIImageView 而不仅仅是图像。在下面的示例中,我希望红色框始终保持不变。我只想重新定位底层图像。

我的捏合手势识别器的代码显然正在转换 imageView,这就是问题所在。但我看不到将手势识别器附加到图像本身的方法。或者如果这就是我应该尝试做的...

@IBAction func scaleImage(_ sender: UIPinchGestureRecognizer) {
   imageView.transform = CGAffineTransform(scaleX: sender.scale, y: sender.scale)
}

当你说

reposition the entire UIImageView and not just the image

听起来您认为 UIImageView 中有一些图像视图容器。

但这不是真的。 UIImageView已经是你能拿到的最低等级了。下面有一个layer,但是绑定到视图上了。

当您更改 UIImageView 的变换时,这会影响手势计算,这就是您出现问题的原因。

我建议你用 UIView 包装 UIImageView 并为此容器视图添加手势识别器。

另外,根据您的需要,最简单的解决方案可能是将图像放在 UIScrollView 中并启用缩放功能,这将允许用户缩放和滚动图像。