あなたの混乱は非常に理解できます。
実際、正の角度は、正のX軸から正のY軸への回転を表します。負の角度は、正のX軸から負のY軸に向かう回転を表します。
「ネイティブ」コアグラフィックス座標系は、Y軸がページ上で上向きに増加する標準のデカルト座標系をモデルにしています。このシステムでは、正の角度は反時計回りの回転を表します。
したがって、独自に作成する場合CGContext
(たとえば、CGBitmapContextCreate
またはを使用してCGPDFContextCreate
)、回転は期待どおりに機能します。
ただし、コンピュータシステムは、歴史的にY軸がページ上で下向きに増加する座標系を使用してきました。このような反転座標系では、正の角度は時計回りの回転を表します。
両方の座標系で、正の角度が正のX軸から正のY軸に向かって回転することに注意してください。
UIKitは、作成したグラフィックスコンテキストの座標系を反転させます。これには、送信前に設定したグラフィックスコンテキストとで設定したグラフィックスコンテキストが含まれdrawRect:
ますUIGraphicsBeginImageContext
。(Quartz 2Dプログラミングガイドでこれについて説明されています。)これは、(を使用して)現在の変換行列を調べることで確認できますCGContextGetCTM
。-1
要素にaが含まれていることがわかります。これはd
、Y軸が反転していることを意味します。
AUIView
は、サブビューのレイアウトに反転座標系も使用します。これは、UIView
transform
プロパティの意味に影響します。