Skala dengan CGAffineTransform dan atur jangkar

Jika saya mengerti dengan benar, menskalakan UIView dengan CGAffineTransform akan menjangkar transformasi ke pusatnya.

Secara khusus:

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

Cetakan:

-50;-50;200;200

Bagaimana Anda membuat skala CGAffineTransform yang menggunakan titik jangkar tertentu (katakanlah 0;0)?

Larutan

(a)

Skala dan kemudian terjemahkan?

Sesuatu seperti:

CGAffineTransform t = CGAffineTransformMakeScale(2, 2);
t = CGAffineTransformTranslate(t, width/2, height/2);
self.transform = t;

(b)

Tetapkan titik jangkar (yang mungkin benar-benar Anda inginkan)

[self layer].anchorPoint = CGPointMake(0.0f, 0.0f);
self.transform = CGAffineTransformMakeScale(2, 2);

(c)

Atur lagi bagian tengah untuk memastikannya berada di tempat yang sama?

CGPoint center = self.center;
self.transform = CGAffineTransformMakeScale(2, 2);
self.center = center;
Komentar (11)

Pertama #import `` dan kemudian atur titik jangkar dari tampilan Anda:

   [[self layer] setAnchorPoint:CGPointMake(0, 0)];
Komentar (2)