Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 关于CGAffineTransformTranslate的问题_Cocoa_Cocoa Touch_Core Graphics - Fatal编程技术网

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