CoreGraphics アフィン変換(平行移動,回転, 拡大縮小)
UIViewに対して, 平行移動, 回転, 拡大縮小などのいわゆるAffine変換を加えます。
UIViewには, transformというプロパティがありこのプロパティに, 作成したCGAffineTransformを加えると,
変換が作用します。
ちなみに, addSubViewしたのちに, 参照に変換を入れてもきちんと変換されます。
APIでは作成, 変更, 修正, 評価? といったものが用意されています。
作成
このAPIでは, CGAffineTransformというオブジェクトを作成します。(これをUIViewに適用します)
API | Description |
---|---|
CGAffineTransformMake | 行列で指定する 3 * 3ただし 最後の列は 0, 0, 1なので, 6個の数を指定する |
CGAffineTransformMakeScale | 拡大, 縮小 x方向, y方向 |
CGAffineTransformMakeRotation | 回転, radianで指定する |
CGAffineTransformMakeTranslation | 平行移動, x, y |
平行移動
CGAffineTransform t = CGAffineTransformMakeTranslation(100, 100); view.transform = t;
回転
float angle = 45.0 * M_PI / 180; // Radian CGAffineTransform t = CGAffineTransformRotate(view.transform, angle); view.transform = t;
拡大•縮小
CGAffineTransform t = CGAffineTransformScale(view.transform, 2.0, 0.5); view.transform = t;
アフィン変換の組み合わせをつくるCGAffineTransformConcat
CGAffineTransform t1 = CGAffineTransformMakeTranslation(100, 100); CGAffineTransform t2 = CGAffineTransformScale(view.transform, 2.0, 0.5); CGAffineTransform tnew = CGAffineTransformConcat(t1, t2);