2d仿射變換
uiview的transform屬性是乙個cgaffinetransform型別,用於在二維空間做旋轉,縮放和平移。cgaffinetransform是乙個可以和二維空間向量(例如cgpoint)做乘法的3x2的矩陣:
1240
paste_image.png
當對uiview應用變換矩陣,uiview圖層矩形內的每乙個點都被相應地做變換,從而形成乙個新的四邊形的形狀。cgaffinetransform中的「仿射」的意思是無論變換矩陣用什麼值,圖層中平行的兩條線在變換之後任然保持平行.
單位矩陣
cgaffinetransformidentity
cgaffinetransform transform = cgaffinetransformidentity;
結果:(cgaffinetransform) transform = (a = 1, b = 0, c = 0, d = 1, tx = 0, ty = 0)
建立仿射變換矩陣
cgaffinetransformmakerotation(cgfloat angle) // 旋轉
cgaffinetransformmakescale(cgfloat sx, cgfloat sy) // 縮放
cgaffinetransformmaketranslation(cgfloat tx, cgfloat ty) // 平移
cgaffinetransform transform = cgaffinetransformmakerotation(m_pi_4);
結果 :
(cgaffinetransform) transform = (a = 0.70710678118654757, b = 0.70710678118654746, c = -0.70710678118654746, d = 0.70710678118654757, tx = 0, ty = 0)
cgaffinetransform transform = cgaffinetransformmakescale(0.8, 0.8);
結果:(cgaffinetransform) transform = (a = 0.80000000000000004, b = 0, c = 0, d = 0.80000000000000004, tx = 0, ty = 0)
cgaffinetransform transform = cgaffinetransformmaketranslation(10, 10);
結果:(cgaffinetransform) transform = (a = 1, b = 0, c = 0, d = 1, tx = 10, ty = 10)
1240
paste_image.png
圖中,灰色為舊圖,藍色為變化後的新圖.
iOS開發之仿射變換示例總結
本篇部落格比較簡單,但還是比較實用的。其中的示例依然使用swift3.0來實現,該部落格算是下篇部落格的乙個引子,因為我們下篇部落格要介紹使用swift開發ios應用中常用的一些extension。而在這些extension中的image extension中會用到仿射變換的東西來對進行處理。所以本...
iOS開發之仿射變換示例總結
本篇部落格比較簡單,但還是比較實用的。其中的示例依然使用swift3.0來實現,該部落格算是下篇部落格的乙個引子,因為我們下篇部落格要介紹使用swift開發ios應用中常用的一些extension。而在這些extension中的image extension中會用到仿射變換的東西來對進行處理。所以本...
Transform仿射變換和原理
uiview有乙個transform屬性,cgaffinetransform 可以操控二維平面內控制項的平移 旋轉和縮放。這三種型別的圖形變換可以使用 cgaffinetransformmake 通過設定引數實現 其實為矩陣中的引數設定 但ios開發中,蘋果為我們提供了更加方便的介面,如下 cgaf...