iOS 仿射變換(CGAffineTransform)

創(chuàng)建一個CGAffineTransform

使用如下幾個函數(shù)可以幫我們快速創(chuàng)建一個CGAffineTransform

//平移
CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)
//縮放
CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
//旋轉(zhuǎn)
CGAffineTransformMakeRotation(CGFloat angle)

我們來做一個圖形的簡單旋轉(zhuǎn)
我們的需求是,將一個圖形旋轉(zhuǎn)45度。

CALayer *MamiLayer = [CALayer layer];
MamiLayer.backgroundColor = [UIColor redColor].CGColor;
MamiLayer.bounds = CGRectMake(0, 0, 100, 100);
MamiLayer.position = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height /2);
    
[self.view.layer addSublayer:MamiLayer];
    
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI_4);
MamiLayer.affineTransform = transform;

混合變換

如果我們不僅需要旋轉(zhuǎn),還需要平移和縮放呢?,這時候單一的變換已經(jīng)不能滿足我們的需求了。
混合變換就應(yīng)用而生
下面我們來看一段代碼

//混合變換
CGAffineTransform identity = CGAffineTransformIdentity;
identity = CGAffineTransformTranslate(identity, 100, 0);//執(zhí)行平移操作
identity = CGAffineTransformScale(identity, .5, .5);//執(zhí)行縮放操作
identity = CGAffineTransformRotate(identity, M_PI_4);//執(zhí)行旋轉(zhuǎn)操作
        
MamiLayer.affineTransform = identity;

當(dāng)使用混合變換的時候,初始,我們需要創(chuàng)建一個空矩陣,系統(tǒng)為我們提供了一個快捷的方法,可以讓我們快速的創(chuàng)建一個空矩陣。

CGAffineTransform identity = CGAffineTransformIdentity;

當(dāng)在使用混合變換的時候,一定要注意放射變換之間的影響,代碼從上至下執(zhí)行,我們一定要盡可能的減少變換之間的影響。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容