私が正しく理解していれば、CGAffineTransform
でUIView
をスケーリングすると、その中心部に変換が固定されます。
具体的には
self.frame = CGRectMake(0,0,100,100);
self.transform = CGAffineTransformMakeScale(2, 2);
NSLog(@"%f;%f;%f;%f", self.frame.origin.x, self.frame.origin.y, self.frame.size.width, self.frame.size.height);
印刷物です。
-50;-50;200;200
特定のアンカーポイント(例えば0;0)を使用するCGAffineTransformスケールはどのように作成するのですか?
(a)
拡大縮小してから平行移動?
のようなものです。
CGAffineTransform t = CGAffineTransformMakeScale(2, 2);
t = CGAffineTransformTranslate(t, width/2, height/2);
self.transform = t;
(b)
アンカーポイントを設定する (おそらく本当に必要なもの)
[self layer].anchorPoint = CGPointMake(0.0f, 0.0f);
self.transform = CGAffineTransformMakeScale(2, 2);
(c)
念のため、もう一度中心を設定してみてください。
CGPoint center = self.center;
self.transform = CGAffineTransformMakeScale(2, 2);
self.center = center;
まず、#import <QuartzCore/QuartzCore.h>
を行い、ビューのアンカーポイントを設定します。
[[self layer] setAnchorPoint:CGPointMake(0, 0)];