- UIView的縮放
CGAffineTransform 提供了兩個(gè)方法用于縮放,分別是CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)和CGAffineTransform CGAffineTransformScale(CGAffineTransform t,CGFloat sx, CGFloat sy)。
1.1 CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)
這個(gè)方法可以方便的對(duì)view的長(zhǎng)和寬進(jìn)行縮放,不改變view的中心點(diǎn)。注意!中心點(diǎn)不變指的是物理位置不變,不是坐標(biāo),因?yàn)樽鴺?biāo)系此時(shí)已經(jīng)發(fā)生改變。
例如:對(duì)view進(jìn)行0.5等比縮放:
view.transform = CGAffineTransformMakeScale(0.5, 0.5);
1.2 CGAffineTransformScale(CGAffineTransform t,CGFloat sx, CGFloat sy)
這個(gè)方法同樣是view的長(zhǎng)和寬進(jìn)行縮放,效果類似CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)不同的是這個(gè)方法可以疊加其他CGAffineTransform效果(比如旋轉(zhuǎn))
例如:對(duì)view進(jìn)行0.5等比縮放:
view.transform = CGAffineTransformScale(view.transform, 0.5, 0.5); - UIView的旋轉(zhuǎn)
CGAffineTransform 提供了兩個(gè)方法用于旋轉(zhuǎn),分別是CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)和CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, CGFloat angle)。
2.1 CGAffineTransformMakeRotation(CGFloat angle)
這個(gè)方法可以方便的對(duì)view進(jìn)行旋轉(zhuǎn),不改變view的中心點(diǎn)。注意!中心點(diǎn)不變指的是物理位置不變,不是坐標(biāo),因?yàn)樽鴺?biāo)系此時(shí)已經(jīng)發(fā)生改變。
例如:對(duì)view進(jìn)行45度旋轉(zhuǎn):
view.transform = CGAffineTransformMakeRotation (M_PI_2);
2.2 CGAffineTransformRotate(CGAffineTransform t, CGFloat angle)
這個(gè)方法同樣是對(duì)view進(jìn)行旋轉(zhuǎn),效果類似 CGAffineTransformMakeRotation(CGFloat angle)不同的是這個(gè)方法可以疊加其他CGAffineTransform效果(比如縮放)
例如:對(duì)view進(jìn)行45度旋轉(zhuǎn):
view.transform = CGAffineTransformRotate (view.transform, M_PI_2);
我們考慮這樣一種需求:對(duì)UIView同時(shí)進(jìn)行縮放和旋轉(zhuǎn)(以0.5倍等比縮放和45度旋轉(zhuǎn)為例)。在我自己的實(shí)踐中,最開始的想法很簡(jiǎn)單,CGAffineTransformMakeScale(0.5, 0.5)進(jìn)行縮放,接著使用CGAffineTransformMakeRotation (M_PI_2)進(jìn)行旋轉(zhuǎn),問題馬上出來了,view并不會(huì)在縮放的同時(shí)進(jìn)行旋轉(zhuǎn),而是只應(yīng)用了最后的旋轉(zhuǎn)效果。一番研究之后,找到了可行的解決方案,即:
分別使用CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)和CGAffineTransform CGAffineTransformScale(CGAffineTransform t,CGFloat sx, CGFloat sy)替換上面的兩個(gè)方法,具體代碼如下:
view.transform = CGAffineTransformScale(view.transform, 0.5, 0.5);
view.transform = CGAffineTransformRotate (view.transform, M_PI_2);
iOS中UIView 的旋轉(zhuǎn)與縮放以及同時(shí)應(yīng)用兩種效果
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- UIView的縮放 CGAffineTransform 提供了兩個(gè)方法用于縮放,分別是CGAffineTransf...
- >*很不幸,沒人能告訴你母體是什么,你只能自己體會(huì)* --駭客帝國(guó) 在第四章“可視效果”中,我們研究了一些增強(qiáng)圖層...
- CoreAnimation之CALayer基礎(chǔ) 1. CGAffineTransform CGAffineTran...
- iOS開發(fā)UIView的transform屬性詳解 本文主要是詳解iOS開發(fā)UIView的transform屬性,...
- CoreGraphics.h CGAffineTransform rotation = CGAffineTrans...