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)表示相反.