首页 > 解决方案 > Swift - 在图像而不是视图上使用手势识别器

问题描述

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

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

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

在此处输入图像描述

标签: swiftuikituigesturerecognizer

解决方案


当你说

重新定位整个 UIImageView 而不仅仅是图像

听起来您认为里面有一些图像的视图容器UIImageView

但事实并非如此。UIImageView已经是你能拿到的最低级别了。下面有一个layer,但它与视图绑定。

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

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

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


推荐阅读