如何使用 UIGestureRecognizers 相对于触摸位置在 UIScrollView 内旋转 UIImageView
Posted
技术标签:
【中文标题】如何使用 UIGestureRecognizers 相对于触摸位置在 UIScrollView 内旋转 UIImageView【英文标题】:How to rotate a UIImageView inside a UIScrollView using UIGestureRecognizers, relative to the touch location 【发布时间】:2018-10-15 22:42:50 【问题描述】:我正在寻找如何在 UIScrollView 内实现 UIImageView 的 UIRotationGestureRecognizer 的示例,其中旋转是相对于触摸发生的位置执行的,而不是相对于 UIImageView 的原点。
在我发现的大多数示例中,ImageView 围绕它自己的中心点旋转。换句话说,如果你将两根手指放在图像的左上角,并转动它们(以执行旋转手势),UIImageView 将围绕它自己的原点旋转。
我正在寻找的行为将使 UIImageView 围绕触摸点旋转。
虽然有很多关于如何在 ScrollView 中为 ImageView 实现 UIRotationGestureRecognizer 的教程,但我还没有找到任何描述如何执行与触摸相关的旋转的教程。
【问题讨论】:
您希望整个滚动视图内容围绕触摸中心旋转,还是仅滚动视图中的图像视图? 【参考方案1】:UIRotationGestureRecognizer 返回一个旋转角度。
基类UIGestureRecognizer
有一个方法
location(ofTouch:in:)
和一个变量 numberOfTouches
在手势识别器的 valueChanged 处理程序中,您应该能够获取 2 次触摸,找到这两个点的中点,然后围绕该点而不是视图中心应用旋转。
【讨论】:
我做到了——location(in:)
给了我说 2 次触摸的中心点,这就是我想要的。但是应用转换很棘手。
确实如此。您应该创建一个转换:将所需的旋转点平移到原点、旋转并向后平移。以上是关于如何使用 UIGestureRecognizers 相对于触摸位置在 UIScrollView 内旋转 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章
UIGestureRecognizers 干扰 UIToolbar?
UIGestureRecognizers vs touchesBegan/touchesMoved/touchesEnded(准确度)
您可以在不禁用其附加的 UIGestureRecognizers 的情况下禁用 UIButton 吗?