2010-04-12 63 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 

为什么用(X,Y)变化(-80,80)?

+0

为什么在每个轴上通过零点来平移原点?那什么都不做。 (即使你认为'CGAffineTransformTranslate'将*翻译为*那一点,但它不会做任何事情:翻译移动原点,0,0 *是原点,因此翻译为0,0会将原点转移到原点,也不会做任何事情。) – 2010-04-12 14:32:04

回答

0

当您设置转换时,backgroundImageView.center不会更改。如果父视图已经旋转,你可以在应用变换之后做这样的事情。

backgroundImageView.center = backgroundImageView.superview.center; 

无论哪种方式,为了您的目的,您应该调整中心而不是转换变换。