一、理論基礎
二、效果演示
三、實現代碼
3.1:位移變換
-(void)positionAnimation{ _demoView.transform = CGAffineTransformIdentity; [UIView animateWithDuration:1.0f animations:^{ _demoView.transform = CGAffineTransformMakeTranslation(100, 100); }]; }
3.2:縮放變換
-(void)scaleAnimation{ _demoView.transform = CGAffineTransformIdentity; [UIView animateWithDuration:1.0f animations:^{ _demoView.transform = CGAffineTransformMakeScale(2, 2); }]; }
3.3:旋轉變換
-(void)rotateAnimation{ _demoView.transform = CGAffineTransformIdentity; [UIView animateWithDuration:1.0f animations:^{ _demoView.transform = CGAffineTransformMakeRotation(M_PI); }]; }
3.4:組合變換
-(void)combinationAnimation{
//仿射變換的組合使用 _demoView.transform = CGAffineTransformIdentity; [UIView animateWithDuration:1.0f animations:^{ CGAffineTransform transform1 = CGAffineTransformMakeRotation(M_PI); CGAffineTransform transform2 = CGAffineTransformScale(transform1, 0.5, 0.5); _demoView.transform = CGAffineTransformTranslate(transform2, 100, 100); }]; }
3.5:矩陣的反轉
-(void)invertAnimation{
_demoView.transform = CGAffineTransformIdentity; [UIView animateWithDuration:1.0f animations:^{ //矩陣反轉 _demoView.transform = CGAffineTransformInvert(CGAffineTransformMakeScale(2, 2)); }]; }
四、補充
- CGAffineTransformIdentity : 單位矩陣變換,一般用於仿射變換的初始化或者還原。
-
CGAffineTransformEqualToTransform(CGAffineTransform t1,
CGAffineTransform t2) : 判斷兩個變換矩陣是否相等 -
CGAffineTransformConcat(CGAffineTransform t1,
CGAffineTransform t2) : 得到兩個矩陣相加后得到的最終矩陣 -
CGPoint CGPointApplyAffineTransform(CGPoint point,
CGAffineTransform t) : 某點通過矩陣變換之后的點 -
CGSize CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t) : 某個size通過矩陣變換之后的size
- CGRect CGRectApplyAffineTransform(CGRect rect, CGAffineTransform t) : 某個Rect通過矩陣變換之后的區域