基本概念
struct CGAffineTransform{ CGFloat a, b, c, d; CGFloat tx, ty;};
以上参数在矩阵中的表示为:
|a b 0| |c d 0| |tx ty 1|
为了把二维图形的变化统一在一个坐标系里,引入了齐次坐标的概念,即把一个图形用一个三维矩阵表示,其中第三列总是(0,0,1),用来作为坐标系的标准。所以所有的变化都由前两列完成。
基本使用(配合动画)
旋转[UIView animateWithDuration:0.5 delay:0.0f options:UIViewAnimationOptionCurveLinear animations:^{ [UIView setAnimationRepeatCount:1e100];//设置动画重复次数 box.transform = CGAffineTransformMakeRotation(M_PI/2);}completion:NULL];
缩放
[UIView animateWithDuration:0.5 delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^{ box.transform = CGAffineTransformMakeScale(0.1, 1);}completion:NULL];
移动
[UIView animateWithDuration:0.5 delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^{ box.transform = CGAffineTransformMakeTranslation(50, 50);}completion:NULL];
串联
[UIView animateWithDuration:0.5 delay:0.0f options:UIViewAnimationOptionCurveLinear animations:^{ CGAffineTransform transform2 = CGAffineTransformMakeTranslation(50, 50); CGAffineTransform transform1 = CGAffineTransformMakeScale(0.1, 1); box.transform = CGAffineTransformConcat(transform1, transform2);}completion:NULL];