iOS開發UI篇--仿射變換(CGAffineTransform)使用小結

一、理論基礎

請參考 CGAffineTransform簡單分析

二、效果演示

1.gif

三、實現代碼

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下載地址

Demo下載地址:這是一個我的iOS交流羣:624212887,羣文件自行下載,不管你是小白還是大牛熱烈歡迎進羣 ,分享面試經驗,討論技術, 大家一起交流學習成長!希望幫助開發者少走彎路。——點擊:加入

如果覺得對你還有些用,就關注小編+喜歡這一篇文章。你的支持是我繼續的動力。

下篇文章預告:UICollectionView初步入門

文章來源於網絡,如有侵權,請聯繫小編刪除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章