iOS所有繼承UIView的類都有一個CGAffineTransform
類型的屬性transform
容劳,它是定義在二維空間上完成View的平移,旋轉(zhuǎn)褂乍,縮放等效果的實現(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);
二:實戰(zhàn)演示
1.原始值
2.修改a的值
3.修改b的值
4.修改c的值
5.修改d的值
6.修改tx的值
7.修改ty的值
相信同學(xué)應(yīng)該知道了它們每一個值的變化竭宰,這樣就可以通過修改它們的值來完成你想要的動畫效果空郊。
三:下面是Apple整合的transform
-
平移 :
①根據(jù)本身的transform
進行平移 CGAffineTransformMakeTranslation(CGFloat tx,CGFloat ty)
②根據(jù)本身的transform
后者另外的transform
進行平移CGAffineTransformTranslate(CGAffineTransform t,CGFloat tx,CGFloat ty)
-
縮放 :
①根據(jù)本身的transform
進行縮放
CGAffineTransformMakeScale(CGFloat sx,CGFloat sy)
②根據(jù)本身的transform
后者另外的transform
進行縮放
CGAffineTransformScale(CGAffineTransform t,CGFloat sx,CGFloat sy)
-
旋轉(zhuǎn) :
① 根據(jù)本身的transform
進行旋轉(zhuǎn)
CGAffineTransformMakeRotation(CGFloat angle) (angle 旋轉(zhuǎn)的角度)
②根據(jù)本身的transform
后者另外的transform
進行旋轉(zhuǎn)
CGAffineTransformRotate(CGAffineTransform t,CGFloat angle)
-
恢復(fù) :反向旋轉(zhuǎn)
CGAffineTransformInvert(CGAffineTransform t)
-
合并:
CGAffineTransformConcat(CGAffineTransform t1,CGAffineTransform t2)
兩個transform
合并起來
-
傾斜:
這個使我們自己定義
-(CGAffineTransform) CGAffineTransformMakeShear(CGFloat x,CGFloat y)
{
CGAffineTransform transform = CGAffineTransformIdentity;
transform.c= -x;
transform.b= y;
returntransform;
}
layer.affineTransform = CGAffineTransformMakeShear(1,0);
-
評測:
查看是不是默認(rèn)的transform
①Bool CGAffineTransformIsIdentity(CGAffineTransform t)
比較兩個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
放射矩陣一個常用的情形就是根據(jù)用戶的手勢來相應(yīng)的改變視圖的變換
UIPanGestureRecognizer
位移
UIPinchGestureRecognizer
縮放
UIRotationGestureRecognizer
旋轉(zhuǎn)
蘋果官方的建議切揭,要多次使用transform
狞甚,最好是初始化一個CGAffineTransform
,進行多次操作廓旬。