gpt4 book ai didi

ios - 使用 UIRotationGestureRecognizer 将弧度转换为度数?

转载 作者:行者123 更新时间:2023-11-29 05:36:29 25 4
gpt4 key购买 nike

我正在使用 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)
}

最佳答案

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

The rotation value is a single value that varies over time. It is not the delta value from the last time that the rotation was reported. Apply the rotation value to the state of the view when the gesture is first recognized—do not concatenate the value each time the handler is called.

因此,请删除 sender.rotation = 0 行。

因此,您需要修复如何将变换应用到 ImageView 。

替换:

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

与:

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

这将应用完整的旋转,而不是尝试增加当前的旋转。

关于ios - 使用 UIRotationGestureRecognizer 将弧度转换为度数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56995017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com