QuartzCore CATransform3D 设置透视效果


众所周知,下面一行代码可以在origin基础上使对应layer绕Y轴旋转180度。

CATransform3DRotate(origin, DegreesToRadians(180), 0.0f, 1.0f, 0.0f);
如果将这个变换加入动画中可以看到,其旋转过程是一个平面效果,并没有象系统提供的flip效果那样有透视效果。

但现在只需要一个简单的改动即可实现此效果,在origin上修改其m34变量,如下所示:

CGFloat zDistance = -1.0 / 1500;
origin.m34 = zDistance;
CATransform3DRotate(origin, DegreesToRadians(180), 0.0f, 1.0f, 0.0f);

其中,zDistance代表透视点离当前平面的距离,取值由-1~1各个,其中:

-1 表示透视点在负无穷,1 表示透视点在正无穷,0 表示透视点在当前平面。

通常情况下会取zDistance的值为负,负貌似表示透视点在当前平面的后面。

而且zDistance的取值不是线性分布的,取1及0.1的效果相差无几。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值