上一篇博客中说了仿射变换,利用系统提供的transform方法对视图图层进行旋转,缩放,平移,这一节的名字叫做混合变换,就是把上一节中的单步操作组合成一步来执行。
假设我们对位于screen中心的一个width和height均为200的视图进行操作,首先宽高各缩小一半,再旋转30度,后再向右平移200个点:
CGAffineTransform transform = CGAffineTransformIdentity; //scale by 50% transform = CGAffineTransformScale(transform, 0.5, 0.5); //rotate by 30 degrees transform = CGAffineTransformRotate(transform, M_PI / 180.0 * 30.0); //translate by 200 points transform = CGAffineTransformTranslate(transform, 200, 0);
以上代码是对刚才所说操作的执行,然而我们编辑代码后看到的并非我们想要的,这是因为每一次的上一步操作都会对下一步造成影响,这一点可以在效果图中看到,具体看模拟器,这里有一个方法:
CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2);
通过这个方法可以把单步的操作进行组合,最终得到我们想要的结果。具体操作代码请看博主github:https://github.com/codeliu6572/TransformChange
一起学习,共同进步。