我试图在Objective-C中进行简单的旋转,但一开始就遇到了一些问题。其中一个问题是我从CGAffineTransformRotate得到的不一致性, 以及在该函数内使用M_PI时的不一致性。
假设我这样做,并将其附加到按钮上。当我按一次它时,它会向逆时针方向旋转180度(很好并且符合文档),但是当我再次按它时,它会旋转180度顺时针即使值不是负数。将M_PI更改为-M_PI也完全相同,旋转没有任何差异:
当我使用它的时间越长,行为变得更加奇怪。
假设我想旋转90度(pi/2)。M_PI现在具有与使用值相同的行为,但旋转方向与应该的相反:
如果我想旋转180度以上(PI),它只会旋转最短路径,即使我指定了正向或负向旋转。当我旋转360度(2PI)时,它甚至不会旋转。
为什么会发生这些事情,我该怎么做才能使其更加一致?
我的第二个问题是如何旋转270度和360度。
假设我这样做,并将其附加到按钮上。当我按一次它时,它会向逆时针方向旋转180度(很好并且符合文档),但是当我再次按它时,它会旋转180度顺时针即使值不是负数。将M_PI更改为-M_PI也完全相同,旋转没有任何差异:
[UIView animateWithDuration:secs delay:0.0 options:option
animations:^{
self.transform = CGAffineTransformRotate(self.transform, M_PI); //Inconsistent
} completion:nil];
假设我将M_PI更改为3.141593,这是在打印时包含在M_PI中的值。现在,当我按下按钮时,它可以完全正常工作。每次旋转180度逆时针方向。当我将其更改为-3.141593时,它也可以完全正常工作,顺时针方向:
self.transform = CGAffineTransformRotate(self.transform, 3.141593); //Works
当我使用它的时间越长,行为变得更加奇怪。
假设我想旋转90度(pi/2)。M_PI现在具有与使用值相同的行为,但旋转方向与应该的相反:
//Should be Clockwise but rotates CounterClockwise
self.transform = CGAffineTransformRotate(self.transform, -M_PI/2);
self.transform = CGAffineTransformRotate(self.transform, -1.5707965);
//Should be CounterClockwise but rotates Clockwise
self.transform = CGAffineTransformRotate(self.transform, M_PI/2);
self.transform = CGAffineTransformRotate(self.transform, 1.5707965);
如果我想旋转180度以上(PI),它只会旋转最短路径,即使我指定了正向或负向旋转。当我旋转360度(2PI)时,它甚至不会旋转。
为什么会发生这些事情,我该怎么做才能使其更加一致?
我的第二个问题是如何旋转270度和360度。