1. 程式人生 > >通過transfrom來修改位置.大小(縮放).旋轉

通過transfrom來修改位置.大小(縮放).旋轉

transfrom是利用線性代數來存放一個控制元件(或許是圖片)的具體資訊.(由於可以通過transfrom直接操作控制元件.所以肯定直接或者間接的儲存著點的資訊和控制元件的大小等資訊)

1.移動.左移右移或者上移下移:

CGAffineTransformMakeTranslation(X偏移量Y偏移量);

CGAffineTransformTranslate(在某個transform的基礎上-一般為自身X偏移量Y偏移量);

2.改變大小(形變):

CGAffineTransformMakeScale(寬縮放的倍數高縮放的倍數);

CGAffineTransformScale(在某個transform的基礎上-一般為自身

寬縮放的倍數高縮放的倍數);

3.使用transfrom進行旋轉

CGAffineTransformMakeRotation(旋轉的弧度);

CGAffineTransformRotate(在某個transform的基礎上-一般為自身旋轉的弧度);

這裡旋轉使用的弧度是用PI來算的.正數就是正時針旋轉.負數就是逆時針旋轉(記不住就直接打個PI到引數裡面然後加一個下劃線).

進過上面的更改.圖片肯定變了樣.如果我們想恢復原樣.不用搞得非常複雜,或者是投機取消.取消掉這個控制元件然後在初始位置增加一個上去.

其實蘋果都為咱們封裝好了.只用直接使用CGAffineTransformIdentity這個方法.一切的改動都會恢復原狀.

不過我建議大家不要用transfrom同時控制旋轉與移動.因為.上一篇介紹center.frame.bounds的文章裡面提到了.iOS系統中每一個外掛(比如一個按鈕).都是一個矩形.雖說你可以通過各種手段來切割圖形.比如讓使用者感覺是圓形的.但其實還是一個矩形的.想象一下.如果旋轉了.看起來不是矩形.但是其實還是一個矩形.最左邊的邊就是最左邊的點做垂直線下去.其他的邊以此類推.如果移動成一個矩形那還是沒問題.就怕可見的地方不是矩形,然後移動(平移).就不是"平移"了.(因為轉動會改變這個影象的frame).