ios - 使用 UIPinchGestureRecognizer 沿一个方向缩放 UIView

标签 ios swift uigesturerecognizer uipinchgesturerecognizer

在我的应用程序中,我有一个可拖动的 UIView,我向其中添加了一个 UIPinchGestureRecognizer。正在关注this教程,默认情况下, View 沿 x 和 y 方向缩放。是否可以用一根手指仅沿一个方向缩放?我的意思是,例如,我像往常一样用拇指和食指点击 UIView,但是当我握住拇指时,我只能在一个方向上移动食指,然后移动 UIView 应根据索引移动的方向沿该维度缩放。

实际上,我是通过向我的 UIView 添加引脚来实现的,如下所示:

enter image description here

我只是想我的应用程序使用 UIPinchGestureRecognizer 可能会更好。

我希望我已经解释清楚了,如果您有一些提示或教程或文档可以链接到我,我将不胜感激。

最佳答案

CGAffineTransformScale(view.transform, recognizer.scale, recognizer.scale) 中仅更新一个轴:X 或 Y 与 recognizer.scale 并保留另一个轴 1.0f

CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)

为了知道应该缩放哪个轴,您需要做一些数学运算来查看手势的两个手指之间的角度,并根据该角度来决定缩放哪个轴。

也许是这样的

enum Axis {
    case X
    case Y
}

func axisFromPoints(p1: CGPoint, _ p2: CGPoint) -> Axis {
    let absolutePoint = CGPointMake(p2.x - p1.x, p2.y - p1.y)
    let radians = atan2(Double(absolutePoint.x), Double(absolutePoint.y))

    let absRad = fabs(radians)

    if absRad > M_PI_4 && absRad < 3*M_PI_4 {
        return .X
    } else {
        return .Y
    }
}

关于ios - 使用 UIPinchGestureRecognizer 沿一个方向缩放 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34308824/

相关文章:

xcode - swift 中的 lldb 错误

ios - 捏合手势比例重置为 1?

ios - 如何使用 Swift 在 iOS 上获取 ISO 639-2 国家代码

ios - 我无法在 swift 3 中从给定的 url 获取 child 的名字?

ios - 从基本身份验证切换到 Django 和 Tastypie 的 OAuth 2.0

swift - macOS - NSView 中的背景图像在辅助监视器上消失

ios - 使用 UIPanGestureRecognizer 拖动时 UIView 不会移动

ios - 将 UIGestureRecognizer 添加到 UILabel 的各个字母

iOS APIS - 'Reference'

javascript - react native : how to get file size, mime 类型和扩展名?