вопрос про CGAffineTransformTranslate - PullRequest
0 голосов
/ 12 апреля 2010
CGRect rect1 = backgroundImageView.frame;
NSLog(@"%f,%f,%f,%f",rect1.origin.x,rect1.origin.y,
                     rect1.size.width,rect1.size.height);

angle = -90.0;
moveX = 0;
moveY = 0.0;

CGFloat degreesToRadians = M_PI * angle / 180.0;
CGAffineTransform landscapeTransform =
      CGAffineTransformMakeRotation(degreesToRadians);
landscapeTransform =
      CGAffineTransformTranslate(landscapeTransform, moveX, moveY);
[backgroundImageView setTransform:landscapeTransform]; 

rect1 = backgroundImageView.frame;
NSLog(@"%f,%f,%f,%f",rect1.origin.x,rect1.origin.y,
                     rect1.size.width,rect1.size.height);

вывод отладочного сообщения:

0.000000,0.000000,320.000000,480.000000
-80.000000,80.000000,480.000000,320.000000

почему (x, y) изменяется на (-80,80)?

1 Ответ

0 голосов
/ 14 апреля 2010

Когда вы устанавливаете преобразование, backgroundImageView.center не изменяется. Если родительское представление уже повернуто, вы можете сделать что-то подобное после применения преобразования.

backgroundImageView.center = backgroundImageView.superview.center;

В любом случае, для ваших целей вы должны отрегулировать центр, а не переводить преобразование.

...