ios – 关于CGAffineTransformMakeRotation旋转方向?

前端之家收集整理的这篇文章主要介绍了ios – 关于CGAffineTransformMakeRotation旋转方向?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用CGAffineTransformMakeRotation,我引用的是Apple文档

The angle,in radians,by which this matrix rotates the coordinate system axes. In iOS,a positive value specifies counterclockwise rotation and a negative value specifies clockwise rotation. In OS X,a positive value specifies clockwise rotation and a negative value specifies counterclockwise rotation.

所以,我通过参数90度,它应该逆时针旋转.
self.myView是灰色背景颜色视图,红色正方形视图仅用于查看旋转方向

#define DEGREES_TO_RADIANS(x) (x * M_PI/180.0)
CGAffineTransform rotation = CGAffineTransformMakeRotation( DEGREES_TO_RADIANS(90) );
[self.myView setTransform:rotation];

但为什么顺时针旋转?
我正在尝试使用模拟器和设备都有相同的结果,顺时针旋转
然后跟踪使用动画:

#define DEGREES_TO_RADIANS(x) (x * M_PI/180.0)
CGAffineTransform rotation = CGAffineTransformMakeRotation( DEGREES_TO_RADIANS(90) );
[UIView animateWithDuration:0.5
                 animations:^{
                     self.myView.transform = rotation;
                 }
                 completion:^(BOOL finished) {
                     NSLog(@"%@",NSStringFromCGAffineTransform(self.myView.transform));
                 }];

它具有相同的结果,顺时针旋转.

有人可以解释为什么,谢谢你的回复.

解决方法

这是文档中的错误.

他们描述矩阵并提供他们用来进行变换的方程:

如果你做数学,你会看到正角度,当Y轴方向向上是向上旋转时逆时针旋转,如在OS X中,当Y轴向下指向时,顺时针方向如在iOS中

例如,您可以尝试将点(5,0)转换为90度,您将获得(0,5),这意味着iOS的顺时针方向和OS X的逆时针.

相同的文件仍然有你引用的(false)部分:

In iOS,a positive value specifies counterclockwise
rotation and a negative value specifies clockwise rotation. In OS X,a
positive value specifies clockwise rotation and a negative value
specifies counterclockwise rotation.

这显然是错误的,因为方程(这是相同的文件的一部分,而且是standard rotation equations)表示相反.

猜你在找的iOS相关文章