主要由這幾個(gè)方法
CGAffineTransformMakeTranslation(平移)
CGAffineTransformMakeScale(縮放)
CGAffineTransformMakeRotation(旋轉(zhuǎn))
CGAffineTransformIdentity(還原到之前的狀態(tài))
另外還有幾個(gè)疊加 吏祸,大致意思是在一個(gè)transfrom基礎(chǔ)上再做一次transform?
CGAffineTransformTranslate
CGAffineTransformScale
CGAffineTransformRotate
接下來我們看下矩陣,這個(gè)是核心铣焊。
首先了解下矩陣的基礎(chǔ)知識(shí)嫉称,矩陣乘法如圖1
矩陣乘法有個(gè)前提條件,AB的話乾吻,? A的列需要和B的行數(shù)相等髓梅。
那么我們來看,transform 怎么用到矩陣的,如圖2
然后利用公式盡行套用绎签,發(fā)現(xiàn)
CGAffineTransformMake(CGFloat a,CGFloat b,CGFloat c,CGFloat d,CGFloat tx,CGFloat ty)
平移:
如果 c,b,d =0枯饿,a=1? 那么 tx 就是圖形按照x軸移動(dòng)的距離,因此我們可以這樣來表示x軸平移诡必。
CGAffineTransformMake(1,0,0,1,100,0)? ;
同理y軸平移的話
CGAffineTransformMake(1,0,0,1,0,100)? ;
那么奢方,x? y 軸同時(shí)移動(dòng)呢?你可以自己寫下試試看擒权。
再看縮放:
如果b袱巨、d、tx碳抄、ty = 0愉老,a 、d = 2,? ?那么新坐標(biāo)x' = 2x剖效,y' = 2y;
CGAffineTransformMake(2,0,0,2,0,0)
你也可以試試嫉入,a? 和? d 用不同的值,看看效果咒林。
最后我們看下旋轉(zhuǎn):
CGAffineTransformMake(CGFloat( cos(M_PI_4) ), CGFloat( sin(M_PI_4) ), -CGFloat( sin(M_PI_4) ), CGFloat( cos(M_PI_4) ), 0, 0)?
這里用到sin? cos 等函數(shù),原理和上面一樣蛀序。
例子中用的都是??CGAffineTransformMake 方法,
我們直接用 會(huì)更方便遣鼓。
CGAffineTransformMakeTranslation(100,100)
CGAffineTransformMakeScale(2,2)
CGAffineTransformMakeRotation(M_PI_4);?
完畢回懦。