2010-04-12 2 views
0
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); 

Сообщение отладки:вопрос о CGAffineTransformTranslate выходе

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

почему (х, у) изменения (-80,80)?

+0

Почему вы переводите начало координат на нулевые точки в каждой оси? Это ничего не делает. (Даже если вы думаете, что 'CGAffineTransformTranslate' переводит * в * эту точку, чего она не делает, это все равно ничего не сделает: перевод перемещает начало координат, а 0,0 * - это начало, поэтому перевод на 0,0 переместил бы происхождение к происхождению. Это тоже не сделало бы ничего.) –

ответ

0

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

backgroundImageView.center = backgroundImageView.superview.center; 

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

 Смежные вопросы

  • Нет связанных вопросов^_^