Cocoa 关于CGAffineTransformTranslate的问题
调试消息输出:Cocoa 关于CGAffineTransformTranslate的问题,cocoa,cocoa-touch,core-graphics,Cocoa,Cocoa Touch,Core Graphics,调试消息输出: 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;
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);
为什么x,y会更改为-80,80?设置变换时,backgroundImageView.center不会更改。如果父视图已旋转,则在应用变换后可以执行类似操作
0.000000,0.000000,320.000000,480.000000
-80.000000,80.000000,480.000000,320.000000
无论哪种方式,出于您的目的,您都应该调整中心,而不是平移变换。为什么要在每个轴上平移原点?那没什么用。即使您认为CGAffineTransformTranslate会转换到该点,但它不会,这仍然不会做任何事情:转换移动原点,0,0是原点,因此转换到0,0就是将原点移动到原点。这也没什么用。
0.000000,0.000000,320.000000,480.000000
-80.000000,80.000000,480.000000,320.000000