仿射變換(CGAffineTransform)使用小結


一、理論基礎

請參考CGAffineTransform簡單分析

二、效果演示

放射動畫演示效果

三、實現代碼

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通過矩陣變換之后的區域

五、Demo下載地址

github下載地址 

 

轉自:http://blog.csdn.net/yixiangboy 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM