CATransform3D 透视的形变效果

来源:互联网 发布:php nginx 403 编辑:程序博客网 时间:2024/05/29 15:11

翻转透视效果
CATransform3D trans = CATransform3DIdentity;
trans.m34 = 1.0/100;
trans = CATransform3DRotate(trans, 15.0f * M_PI/180.0f, 1, 0, 0);
效果如下:
这里写图片描述

transform的结构如下:
struct CATransform3D
{
CGFloat m11, m12, m13, m14;
CGFloat m21, m22, m23, m24;
CGFloat m31, m32, m33, m34;
CGFloat m41, m42, m43, m44;
};
不好理解4X4矩阵每个参数的含义,只能先记住几个基本的用法
通过设置m34可以用来设置layer(view)的透视效果,用白话就是近大远小,但是需要和CATransform3DRotate(旋转)配合起来使用才能看出效果,因为只有沿X、Y轴旋转之后,视图面和观察者才能产生一个角度,View上面的点才有远近之分(相对观察者)。

m34默认为0(不形变),如果将上面m34的值设置越大那么透视效果越明显,
比如将m34 = 1.0 / 70, 效果如下:
这里写图片描述
发现图片倾斜得更加厉害,透视效果更加明显

0 0