objective-c – UIRotationGestureRecognizer旋转有时会碰到非常大的值

objective-c – UIRotationGestureRecognizer旋转有时会碰到非常大的值,第1张

概述我正在使用UIRotationGestureRecognizer来旋转UI ImageView.通过将所有小的旋转变化添加到CGFloat,我尝试计算UIImageView的总旋转.它确实很好,但不知何故,手势的旋转属性有时会有很大的值.通常情况下,当旋转速度很慢时,它会在0.00 ##左右,但随后会突然开始给出类似6的值.##.最终结果是总数> 300弧度,这是荒谬的 – 超过47’革命’只有一 我正在使用UIRotationGestureRecognizer来旋转UI ImageVIEw.通过将所有小的旋转变化添加到CGfloat,我尝试计算UIImageVIEw的总旋转.它确实很好,但不知何故,手势的旋转属性有时会有很大的值.通常情况下,当旋转速度很慢时,它会在0.00 ##左右,但随后会突然开始给出类似6的值.##.最终结果是总数> 300弧度,这是荒谬的 – 超过47’革命’只有一毫米的手指运动.

有谁知道是什么导致这种情况,更重要的是,有解决方案吗?

这是一些代码:

if ([gesture state] == UIGestureRecognizerStateBegan || [gesture state] == UIGestureRecognizerStateChanged) {    totalRotation += [gesture rotation];    NSLog(@"%f",[gesture rotation]);    [gesture vIEw].transform = CGAffinetransformRotate([[gesture vIEw] transform],[gesture rotation]);    [gesture setRotation:0];} else {    NSLog(@"rot: %f",totalRotation);}
解决方法 我也得到了这个. 6.##值约为2 * PI(即360度).可以是/ – 6. ##在我的经验中.我甚至得到了 – – 12.##(4 * PI)我只是在检查和纠正:

CGfloat useRotation = gesture.rotation;while( useRotation < -M_PI )    useRotation += M_PI*2;while( useRotation > M_PI )    useRotation -= M_PI*2;

实际上你不需要这样做,因为你直接使用角度. Sin(角度/ – PI * 2)= Sin(角度)等.不要担心300弧度,它仍然会得到正确的变换.但是我将角度除以2,所以这对我来说是一个问题.

总结

以上是内存溢出为你收集整理的objective-c – UIRotationGestureRecognizer旋转有时会碰到非常大的值全部内容,希望文章能够帮你解决objective-c – UIRotationGestureRecognizer旋转有时会碰到非常大的值所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1229782.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存