structCATransform3D
{CGFloatm11(x縮放), m12(y切變), m13(旋轉(zhuǎn)), m14;
CGFloatm21(x切變), m22(y縮放), m23, m24;
CGFloatm31(旋轉(zhuǎn)), m32, m33, m34(透視效果,要操作的對(duì)象要有旋轉(zhuǎn)的角度,不然沒(méi)效果);
CGFloatm41(x平移), m42(y平移), m43(z平移), m44;};
m34透視效果,一般通過(guò)-1.0/d來(lái)應(yīng)用透視效果,d代表想象中視覺(jué)相機(jī)與屏幕之間的距離,以像素為單位,通常500-1000j就已經(jīng)很好了。
注:使用3D變換的時(shí)候要注意滅點(diǎn),統(tǒng)一設(shè)置所有圖層共享一個(gè)滅點(diǎn)
CATransform3D perspective = CATransform3DIdentity;
perspective.m34 = - 1.0 / 500.0;
self.containerView.layer.sublayerTransform = perspective;
CATransform3DMakeTranslation (CGFloat tx, CGFloat ty, CGFloattz)
tx:X軸偏移位置,往下為正數(shù)。
ty:Y軸偏移位置,往右為正數(shù)。
tz:Z軸偏移位置,往外為正數(shù)。
CATransform3DMakeScale(CGFloat sx, CGFloat sy, CGFloat sz);
sx:X軸縮放,代表一個(gè)縮放比例,一般都是0 --- 1 之間的數(shù)字。
sy:Y軸縮放。
sz:整體比例變換時(shí),也就是m11(sx)==m22(sy)時(shí),若m33(sz)>1,圖形整體縮小,若0<1,圖形整體放大,若m33(sz)<0,發(fā)生關(guān)于原點(diǎn)的對(duì)稱等比變換。
CATransform3DMakeRotation(CGFloat angle, CGFloat x, CGFloat y, CGFloat z);
angle:旋轉(zhuǎn)的弧度,所以要把角度轉(zhuǎn)換成弧度:角度* M_PI / 180。
x:向X軸方向旋轉(zhuǎn)。值范圍-1--- 1之間
y:向Y軸方向旋轉(zhuǎn)。值范圍-1 ---1之間
z:向Z軸方向旋轉(zhuǎn)。值范圍-1 ---1之間
CATransform3DContact 把動(dòng)作combine在一起