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);

参考 逆引きObjective-C for iPhoneアプリ
Apple Developer