objective-c – UIRotationGestureRecognizer旋转有时会碰到非常
发布时间:2020-12-16 07:27:58 所属栏目:百科 来源:网络整理
导读:我正在使用UIRotationGestureRecognizer来旋转UI ImageView.通过将所有小的旋转变化添加到CGFloat,我尝试计算UIImageView的总旋转.它确实很好,但不知何故,手势的旋转属性有时会有很大的值.通常情况下,当旋转速度很慢时,它会在0.00 ##左右,但随后会突然开始给
我正在使用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,所以这对我来说是一个问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |