CATransform3D中zPosition详解

在ios开发中,很多时候会用到3d的动画效果来增强界面的感染力,但是往往成就一个美好的事物的时候是要付出很多代价的,本人就纠结在这个3d旋转上花了不少时间。

先来说下这个3d和2d的区别,大体上的区别就不去说了,众所周知的事情,这边着重来阐述下在整个UI界面的一些层次的布局:

(1)2d动画只会在一个平面上做变换,能够考虑的只有xy两个方向;

(3)3d动画除了看到的手机屏幕的这个平面外,还有一个垂直于手机屏幕的一个面(一下统称z),对于3d动画来说,这个z轴有着很大的作用。下面的文章会慢慢道来;

先来看个例子:

CATransform3D中zPosition详解_第1张图片CATransform3D中zPosition详解_第2张图片

从上到下是橙色的view按照上沿向内旋转一定得角度而得到的,这个是么有问题的。接下来我们继续:

CATransform3D中zPosition详解_第3张图片CATransform3D中zPosition详解_第4张图片

出现这样的效果,第一眼肯定会认为橙色的view比绿色的view先加到控制器上,但是事实恰恰相反,我是先加载绿颜色,再去加载橙色的,出现这样的效果是因为这个橙色的view的zPositon小于绿颜色的view的zPosition。

重点来了,我们需要设置这个zPosition。什么是zPosition?

所谓的zPosition就是上文所说的z轴,它的坐标标度是从屏幕内往屏幕外依次递增;

也就是说上图橙色的view的zPosition是要小于绿颜色的。现在若把绿色的zPosition设成小于红色的,会出项下面的样子:

CATransform3D中zPosition详解_第5张图片

为什么会变成这样?不要急,原因还是出在了zPosition上,由于橙色的zPosition值虽然设的比绿色的要大,但是由于这个值超出绿色的大小并没有超过转动后橙色在z轴上位移的大小,所以会这样,这个时候,我们只需要把这个值再设大一点知道超过位移的距离,如下图:

CATransform3D中zPosition详解_第6张图片

这样就ok了!

你可能感兴趣的:(CATransform3D中zPosition详解)