动画之CGAffineTransform

CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性,控制视图的缩放、旋转和平移操作

  • CGAffineTransformIdentity

  //下面所有都是针对视图的原定最初位置的中心点为起始参照进行相应操作的,在操作结束之后可对设置量进行还原:
  button.transform = CGAffineTransformIdentity;

  • CGAffineTransformMakeTranslation(CGFloat tx,
    CGFloat ty)

  //平移:设置平移量
  //注意:基于对象的初始的位置做的形变!不是累加的形变
  button.transform = CGAffineTransformMakeTranslation(0, -100);

  • CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)

//缩放(x、y都扩两倍)
//注意:基于对象的初始的位置做的形变!不是累加的形变
 view.transform = CGAffineTransformMakeScale(2,2)

  • CGAffineTransformMakeRotation(CGFloat angle)

//旋转
//注意:基于对象的初始的位置做的形变!不是累加的形变
//angle是弧度制,也就是π,并不是角度制,且类似缩放,弧度是正数是顺时针旋转,负数是逆时针旋转
view.transform = CGAffineTransformMakeScale(M_PI)

下面介绍几个可以累加的形变
  • CGAffineTransformTranslate(CGAffineTransform t,
    CGFloat tx, CGFloat ty)

  • CGAffineTransformScale(CGAffineTransform t,
    CGFloat sx, CGFloat sy)

  • CGAffineTransformRotate(CGAffineTransform t,
    CGFloat angle)

跟之前的相比只是多了一个CGAffineTransform的参数,我们可以设置这个参数来实现类似组合动画的效果

view.transform = CGAffineTransformIdentity;
[UIView animateWithDuration:1.0f animations:^{
    CGAffineTransform transform1 = CGAffineTransformMakeRotation(M_PI);
    CGAffineTransform transform2 = CGAffineTransformScale(transform1, 0.5, 0.5);
    view.transform = CGAffineTransformTranslate(transform2, 100, 100);
}];


这样我们就实现了旋转、缩放、位移动画的结合

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容