iOS所有繼承UIView的類都有一個(gè)CGAffineTransform類型的屬性transform,它是定義在二維空間上完成View的平移,旋轉(zhuǎn),縮放等效果的實(shí)現(xiàn)。這篇文章主要是展示所有值變化的效果。
一:下面是原始的(默認(rèn)的)transform
1(a) 0(b) 0
仿射變換 transform: 0(c) 1(d) 0
0(tx) 0(ty) 1
CGAffineTransformMake(a, b, c, d, tx, ty)
默認(rèn)值 CGAffineTransformMake(1, 0, 0, 1, 0, 0);
二:實(shí)戰(zhàn)演示
1.原始值

2.修改a的值

3.修改b的值

4.修改c的值

5.修改d的值

6.修改tx的值

7.修改ty的值

相信同學(xué)應(yīng)該知道了它們每一個(gè)值的變化,這樣就可以通過(guò)修改它們的值來(lái)完成你想要的動(dòng)畫(huà)效果。
三:下面是Apple整合的transform
-
平移 :
①根據(jù)本身的transform進(jìn)行平移 CGAffineTransformMakeTranslation(CGFloat tx,CGFloat ty)
②根據(jù)本身的transform后者另外的transform進(jìn)行平移CGAffineTransformTranslate(CGAffineTransform t,CGFloat tx,CGFloat ty)
-
縮放 :
①根據(jù)本身的transform進(jìn)行縮放
CGAffineTransformMakeScale(CGFloat sx,CGFloat sy)
②根據(jù)本身的transform后者另外的transform進(jìn)行縮放
CGAffineTransformScale(CGAffineTransform t,CGFloat sx,CGFloat sy)
-
旋轉(zhuǎn) :
① 根據(jù)本身的transform進(jìn)行旋轉(zhuǎn)
CGAffineTransformMakeRotation(CGFloat angle) (angle 旋轉(zhuǎn)的角度)
②根據(jù)本身的transform后者另外的transform進(jìn)行旋轉(zhuǎn)
CGAffineTransformRotate(CGAffineTransform t,CGFloat angle)
-
恢復(fù) :反向旋轉(zhuǎn)
CGAffineTransformInvert(CGAffineTransform t)
-
合并:
CGAffineTransformConcat(CGAffineTransform t1,CGAffineTransform t2)
兩個(gè)transform合并起來(lái)
-
傾斜:
這個(gè)使我們自己定義
-(CGAffineTransform) CGAffineTransformMakeShear(CGFloat x,CGFloat y)
{
CGAffineTransform transform = CGAffineTransformIdentity;
transform.c= -x;
transform.b= y;
returntransform;
}
layer.affineTransform = CGAffineTransformMakeShear(1,0);
-
評(píng)測(cè):
查看是不是默認(rèn)的transform
①Bool CGAffineTransformIsIdentity(CGAffineTransform t)
比較兩個(gè)transform是否相等
②bool CGAffineTransformEqualToTransform(CGAffineTransform t1,CGAffineTransform t2)
仿射矩陣應(yīng)用:
①CGPointApplyAffineTransform(CGPoint point,CGAffineTransform t)得到新的中心CGPoint
②CGSizeApplyAffineTransform(CGSize size,CGAffineTransform t) 得到新的size CGSize
③CGRectApplyAffineTransform(CGRect rect,CGAffineTransform t) 得到新的rect CGRect
放射矩陣一個(gè)常用的情形就是根據(jù)用戶的手勢(shì)來(lái)相應(yīng)的改變視圖的變換
UIPanGestureRecognizer 位移
UIPinchGestureRecognizer 縮放
UIRotationGestureRecognizer 旋轉(zhuǎn)
蘋(píng)果官方的建議,要多次使用transform,最好是初始化一個(gè)CGAffineTransform,進(jìn)行多次操作。