【问题标题】:Converting Radians to Degrees using UIRotationGestureRecognizer?使用 UIRotationGestureRecognizer 将弧度转换为度数?
【发布时间】:2019-07-12 02:45:44
【问题描述】:

我正在使用 UIRotationGestureRecognizer 来旋转图像。我想将旋转角度从弧度转换为度数,因为我可以更好地思考度数。我在堆栈和其他来源上找到了解决方案,但由于某种原因,该解决方案似乎不起作用

例如,当我将图像逆时针旋转约 45 度时,从公式中得到的度值约为 -0.15 ???

@objc func handleImageRotation(sender: 
UIRotationGestureRecognizer){
    guard sender.view != nil else{return}

    if sender.state == .began || sender.state == .changed {
        // rotation enacted
        imageView.transform = imageView.transform.rotated(by: sender.rotation)
        rotationAngleRads = sender.rotation
        rotationAngleDegs = rad2Deg(radians: rotationAngleRads)
        print("Degrees: \(rotationAngleDegs!)")

        sender.rotation = 0
     }
}


 // Convert Radians to Degress
private func rad2Deg(radians: CGFloat) -> Double{

    let angle = Double(radians) * (180 / .pi)
    return Double(angle)
}

【问题讨论】:

标签: ios swift uigesturerecognizer


【解决方案1】:

您的主要问题是您正在重置手势的 rotation 属性。你不应该那样做。来自文档:

旋转值是随时间变化的单个值。它不是上次报告旋转时的增量值。首次识别手势时将旋转值应用于视图的状态 - 不要在每次调用处理程序时连接该值。

所以删除sender.rotation = 0 行。

因此,您需要修复如何将转换应用于图像视图。

替换:

imageView.transform = imageView.transform.rotated(by: sender.rotation)

与:

imageView.transform = CGAffineTransform(rotatationAngle: sender.rotation)

这会应用整个旋转而不是尝试增加当前旋转。

【讨论】:

    猜你喜欢
    • 2015-11-28
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2015-05-24
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    相关资源
    最近更新 更多