((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformMakeRotation(1.57*2);
((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformMakeScale(.5,.5);
一次只做其中一件作品。如何保存转换然后应用另一个? 干杯
答案 0 :(得分:24)
为了扩展彼得所说的内容,你会想要使用如下代码:
CGAffineTransform newTransform;
newTransform = CGAffineTransformMakeRotation(1.57*2);
((UIImageView*)[dsry objectAtIndex:0]).transform = CGAffineTransformScale(newTransform,.5,.5);
CGAffineTransformMake ...函数从头开始创建新的转换,其他的转换连接。视图和图层一次只能应用一个变换,因此这就是您一次在视图上创建多个缩放,旋转和平移效果的方法。
您需要注意连接转换的顺序,以达到正确的效果。
答案 1 :(得分:9)
来自Apple文档:
CGAffineTransformConcat返回一个 仿射变换矩阵 结合两个现有的 仿射变换。
CGAffineTransform CGAffineTransformConcat (
CGAffineTransform t1,
CGAffineTransform t2
);
参数t1第一个仿射 变换。
t2第二个仿射变换。这个 仿射变换连接到 第一次仿射变换。
返回值一个新的仿射 变换矩阵。也就是说,t'= T1 * T2。
讨论连词结合了两个 仿射变换矩阵 将它们相乘。你可能会 执行几个连接 为了创造一个仿射 包含累积的变换 几种转变的影响。
请注意,矩阵运算不是 可交换的 - 你的顺序 连接矩阵很重要。 也就是乘法的结果 矩阵t2的矩阵t1没有 必然等于结果 将矩阵t2乘以矩阵t1。
答案 2 :(得分:2)
一次只做其中一件作品。
是的,因为你用第二个替换了第一个。
如何保存转换然后应用其他转换?
Concatenate them together,并将结果矩阵分配给属性。
您可以将变换矩阵存储在CGAffineTransform
类型的变量中;你可以将它用于更复杂的转换中的中间步骤,或者使代码更清晰(或两者兼而有之)。