【问题标题】:Swift - Using gesture recognizers on an image but not the viewSwift - 在图像而不是视图上使用手势识别器
【发布时间】:2021-08-24 15:22:46
【问题描述】:

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

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

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

【问题讨论】:

    标签: swift uikit uigesturerecognizer


    【解决方案1】:

    当你说的时候

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

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

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

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

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

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

    【讨论】:

    • 我认为我可以使用图像视图的图像属性,以便仅更改它。有点像 contentMode 似乎是基于它的设置。但是您的两个解决方案都有意义,所以我会尝试一下。谢谢!
    猜你喜欢
    • 2017-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多