Swift - 在图像而不是视图上使用手势识别器
Posted
技术标签:
【中文标题】Swift - 在图像而不是视图上使用手势识别器【英文标题】:Swift - Using gesture recognizers on an image but not the view 【发布时间】:2021-08-24 15:22:46 【问题描述】:我有一个包含单个图像的 UIImageView。在情节提要中,我在图像视图上放置了一个平移手势识别器。它有效,但是,我只能重新定位整个 UIImageView 而不仅仅是图像。在下面的示例中,我希望红框始终保持不变。我只想重新定位底层图像。
我的捏手势识别器的代码显然是在转换 imageView,这就是问题所在。但我没有看到将手势识别器附加到图像本身的方法。或者,如果这就是我应该尝试做的......
@IBAction func scaleImage(_ sender: UIPinchGestureRecognizer)
imageView.transform = CGAffineTransform(scaleX: sender.scale, y: sender.scale)
【问题讨论】:
【参考方案1】:当你说的时候
重新定位整个 UIImageView 而不仅仅是图像
听起来您认为UIImageView
内部有一些图像视图容器。
但事实并非如此。 UIImageView
已经是你能得到的最低级别了。下面有一个layer
,但它绑定到视图。
当您更改 UIImageView
的转换时,这会影响手势计算,这就是您出现问题的原因。
我建议你用UIView
包裹UIImageView
并为此容器视图添加手势识别器。
另外根据您的需要,最简单的解决方案可能是将图像放在UIScrollView
中并启用缩放,这将允许用户缩放和滚动图像。
【讨论】:
我认为我可以使用图像视图的图像属性,以便仅更改它。有点像 contentMode 似乎是基于它的设置。但是您的两个解决方案都有意义,所以我会尝试一下。谢谢!以上是关于Swift - 在图像而不是视图上使用手势识别器的主要内容,如果未能解决你的问题,请参考以下文章
iOS - 使用/传递手势识别器用于视图中的多个表视图或集合视图(Swift)
iOS - 在视图(Swift)中为多个Tableview或Collectionviews使用/传递手势识别器