rom*_*mox 9 iphone rotation cgaffinetransform
在我的实验中,我得出以下结论:
YourView.transform = CGAffineTransformMakeRotation( positive value );
Run Code Online (Sandbox Code Playgroud)
将顺时针旋转视图,和
YourView.transform = CGAffineTransformMakeRotation( Negative value );
Run Code Online (Sandbox Code Playgroud)
将逆时针旋转视图,
但文件说:
以弧度表示旋转仿射变换的角度.在iOS中,正值指定逆时针旋转,负值指定顺时针旋转.
这些是否相互矛盾?
rob*_*off 23
你的困惑是可以理解的.
实际上,正角度表示从正X轴向正Y轴的旋转.负角度表示从正X轴向负Y轴的旋转.
"原生"核心图形坐标系统是在标准笛卡尔坐标系之后建模的,其中Y轴在页面上向上增加.在此系统中,正角度表示逆时针旋转:

因此,如果您创建自己的CGContext(例如,通过使用CGBitmapContextCreate或CGPDFContextCreate),旋转将按预期工作.
然而,计算机系统历来使用坐标系,其中Y轴在页面上向下增加.在像这样的翻转坐标系中,正角表示顺时针旋转:

请注意,在两个坐标系中,正角度从正X轴向正Y轴旋转.
事实证明,UIKit会翻转它为您创建的图形上下文的坐标系.这包括它在发送之前设置drawRect:的图形上下文以及它设置的图形上下文UIGraphicsBeginImageContext.(" Quartz 2D编程指南"解释了这一点.)您可以通过查看当前的变换矩阵(使用CGContextGetCTM)来检查这一点.你会发现-1它的d元素中有一个,意味着Y轴被翻转.
A UIView还使用翻转坐标系来布置其子视图,这会影响UIView transform属性的含义.
| 归档时间: |
|
| 查看次数: |
3130 次 |
| 最近记录: |