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
);