((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformMakeRotation(1.57*2);
((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformMakeScale(.5,.5);一次只能使用其中的一种。如何保存转换,然后应用另一个转换?干杯
发布于 2009-12-13 23:07:43
为了扩展Peter所说的内容,您可能希望使用如下代码:
CGAffineTransform newTransform;
newTransform = CGAffineTransformMakeRotation(1.57*2);
((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformScale(newTransform,.5,.5);CGAffineTransformMake...函数从头开始创建新的转换,其他函数连接转换。视图和图层一次只能应用一个变换,因此这就是在视图上同时创建多个缩放、旋转和平移效果的方式。
您确实需要注意连接转换的顺序,以便获得正确的效果。
发布于 2009-12-13 23:10:58
来自Apple文档:
CGAffineTransformConcat返回一个通过组合两个现有仿射变换构造的仿射变换矩阵。
CGAffineTransform CGAffineTransformConcat (
CGAffineTransform t1,
CGAffineTransform t2
);参数t1第一个仿射变换。
t2第二个仿射变换。该仿射变换连接到第一个仿射变换。
返回值一个新的仿射变换矩阵。也就是说,t‘= t1*t2。
讨论连接通过将两个仿射变换矩阵相乘将它们组合在一起。您可以执行多个连接,以便创建包含多个转换的累积效果的单个仿射转换。
请注意,矩阵运算是不可交换的--连接矩阵的顺序很重要。也就是说,矩阵t1乘以矩阵t2的结果不一定等于矩阵t2乘以矩阵t1的结果。
发布于 2009-12-13 16:05:19
一次只能运行其中的一种。
对,因为你把第一个换成了第二个。
如何保存转换,然后应用另一个转换?
Concatenate them together,并将结果矩阵赋给该属性。
您可以将转换矩阵存储在CGAffineTransform类型的变量中;您可以将其用于更复杂转换中的中间步骤,或者使代码更清晰(或者两者兼而有之)。
https://stackoverflow.com/questions/1895818
复制相似问题