struct CATransform3D
{
CGFloat m11(x縮放), m12(y切變), m13(旋轉(zhuǎn)), m14;
CGFloat m21(x切變), m22(y縮放), m23, m24;
CGFloat m31(旋轉(zhuǎn)), m32, m33, m34(透視效果,要操作的對象要有旋轉(zhuǎn)的角度,不然沒效果);
CGFloat m41(x平移), m42(y平移), m43(z平移), m44;
};
m34透視效果,一般通過-1.0/d來應用透視效果,d代表想象中視覺相機與屏幕之間的距離,以像素為單位,通常500-1000j就已經(jīng)很好了。
注:使用3D變換的時候要注意滅點,統(tǒng)一設置所有圖層共享一個滅點
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軸縮放,代表一個縮放比例,一般都是0 --- 1 之間的數(shù)字。
sy:Y軸縮放。
sz:整體比例變換時,也就是m11(sx)==m22(sy)時,若m33(sz)>1,圖形整體縮小,若0<1,圖形整體放大,若m33(sz)<0,發(fā)生關于原點的對稱等比變換。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 把動作combine在一起