iOS開發之仿射變換樣本總結,ios變換樣本
本篇部落格比較簡單,但還是比較實用的。其中的樣本依然使用Swift3.0來實現,該部落格算是下篇部落格的一個引子,因為我們下篇部落格要介紹使用Swift開發iOS應用中常用的一些Extension。而在這些Extension中的Image Extension中會用到仿射變換的東西來對圖片進行處理。所以本篇部落格就先將fang放射變換(CGAffineTransform)的東西拎出來單獨的過一下,這樣在下篇部落格中就可以減少對仿射變換的介紹了。
在之前的部落格中,我們聊過仿射變換的東西,不過是使用的放射變換來實現的動畫,關於該部分內容請移步於《iOS開發之各種動畫各種頁面切面效果》。之前的部落客要講述了CATransition,而本篇部落客要聊的內容是CGAffineTransform。當然本篇部落格的內容依然是依託於相關的樣本,該樣本對應的原始碼會在github上進行分享,博文結尾處為github源碼分享連結。雖然今天部落格中的代碼以及樣本都比較簡單,但是還是有必要單獨拎出來介紹一下的。
一、平移
接下來我們來看一下CGAffineTransform的平移,在使用CGAffineTransform進行平移的時候,我們要注意座標系的轉換。下方是我們在做UI布局時的座標系,也就是iOS螢幕的座標系。左上方是原點,x軸右為正,左為負,y軸上為負,下為正。下方就是iPhone的螢幕座標系。平移時也是採用下方的座標繫結構。
下方就是對ImageView的平移的效果。分別使用兩個Slider來控制左右移動和上下移動。具體運行效果如下所示。
控制平移的代碼也是比較簡單的,如下所示。x參數為正時則向右移動,x為負數時,向左移動。而參數y為正時,向下移動,y為負值時向上運動。具體代碼如下所示:
二、縮放
聊完平移,接下來我我們來看一下仿射變換的縮放。使用CGAffineTransform進行View的縮放也是比較簡單的,下方就是對ImageView進行縮放的運行效果。在縮放的過程中分為x方向上的縮放和y方向的縮放。x和y分別表示在x軸和y軸上縮放的倍數,如果x或者y為負數的話,那麼將相應的視圖翻轉後在進行縮放,運行效果如下所示。
實現上述效果也是比較簡單的,代碼就下方一行,如下所示,x就表示x軸上的縮放量,y就表示y軸上的縮放量。
三、旋轉
接下來就來聊聊CGAffineTransform的旋轉,直奔主題,下方就是旋轉的運行結果。旋轉是是按照弧度進行旋轉的,一圈是0-2∏,如果弧度為正,則是順時針旋轉,如果弧度為負,則是逆時針旋轉。具體運行結果如下所示:
實現上述效果的代碼也是比較簡單的,具體代碼如下所示:
本篇部落格的內容就介紹完了,下方是本篇部落格所涉及Demo的github源碼分享連結。
github分享連結:https://github.com/lizelu/CGAffineTransformDemo