iOS開發之仿射變換示例總結

2021-07-27 22:50:52 字數 1799 閱讀 5496

本篇部落格比較簡單,但還是比較實用的。其中的示例依然使用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原始碼分享鏈結。

iOS開發之仿射變換示例總結

本篇部落格比較簡單,但還是比較實用的。其中的示例依然使用swift3.0來實現,該部落格算是下篇部落格的乙個引子,因為我們下篇部落格要介紹使用swift開發ios應用中常用的一些extension。而在這些extension中的image extension中會用到仿射變換的東西來對進行處理。所以本...

深入iOS開發 iOS仿射變換和3D變換

2d仿射變換 uiview的transform屬性是乙個cgaffinetransform型別,用於在二維空間做旋轉,縮放和平移。cgaffinetransform是乙個可以和二維空間向量 例如cgpoint 做乘法的3x2的矩陣 1240 paste image.png 當對uiview應用變換矩...

示例程式034 仿射變換

什麼是仿射變換 乙個任意的仿射變換都能表示為 乘以乙個矩陣 線性變換 接著再 加上乙個向量 平移 所以,能夠用仿射變換來表示 旋轉 線性變換 平移 向量加 縮放操作 線性變換 簡單的說,仿射變換代表的是兩幅圖之間的 關係 位置關係 3.通常使用2 3的矩陣來進行仿射變換。比如用 a,b矩陣 對 x矩...