Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Iphone 如何同时使用CGAffineTransformMakeScale和Rotation?_Iphone_Core Graphics_Cgaffinetransform - Fatal编程技术网

Iphone 如何同时使用CGAffineTransformMakeScale和Rotation?

Iphone 如何同时使用CGAffineTransformMakeScale和Rotation?,iphone,core-graphics,cgaffinetransform,Iphone,Core Graphics,Cgaffinetransform,一次只做一个。如何保存一个转换,然后应用另一个转换? 干杯 一次只做一个 对,因为你把第一个换成了第二个 如何保存一个转换,然后应用另一个转换 ,并将结果矩阵指定给属性 您可以将转换矩阵存储在cGraffinetTransform类型的变量中;您可以将其用于更复杂转换的中间步骤,或使代码更清晰(或两者兼而有之)。要扩展Peter所说的内容,您需要使用如下代码: ((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransform

一次只做一个。如何保存一个转换,然后应用另一个转换? 干杯

一次只做一个

对,因为你把第一个换成了第二个

如何保存一个转换,然后应用另一个转换

,并将结果矩阵指定给属性


您可以将转换矩阵存储在
cGraffinetTransform
类型的变量中;您可以将其用于更复杂转换的中间步骤,或使代码更清晰(或两者兼而有之)。

要扩展Peter所说的内容,您需要使用如下代码:

((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformMakeRotation(1.57*2);
((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformMakeScale(.5,.5);
CGAffineTransformMake。。。函数从头开始创建新变换,其他函数连接变换。视图和层一次只能应用一个变换,因此这就是如何在视图上同时创建多个缩放、旋转和平移效果


为了获得正确的效果,您确实需要注意转换的连接顺序。

来自Apple文档:

CGAffineTransformConcat返回 仿射矩阵 由两个现有的 仿射变换

参数t1是第一仿射的 转变

t2是第二个仿射变换。这 仿射变换连接到 第一个仿射变换

返回一个新的仿射值 变换矩阵。就是,不是,= t1*t2

讨论级联结合了两种方法 仿射变换矩阵 将它们相乘。你可以 在中执行多个连接 创建单个仿射的顺序 包含累积 几个变换的效果

请注意,矩阵运算不是 可交换的,可交换的,可交换的 串联矩阵很重要。 也就是说,乘以的结果 矩阵t1与矩阵t2之间的关系不成立 必然等于 将矩阵t2乘以矩阵t1


谢谢大家。我刚拿了一个CGAFfineTransform的,它工作得很好!
CGAffineTransform newTransform;
newTransform = CGAffineTransformMakeRotation(1.57*2);
((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformScale(newTransform,.5,.5);
CGAffineTransform CGAffineTransformConcat (
   CGAffineTransform t1,
   CGAffineTransform t2
);