美文网首页
CATransform3D Z轴变换的一个点

CATransform3D Z轴变换的一个点

作者: 地上的 | 来源:发表于2018-10-23 19:12 被阅读0次

想要通过变换Z轴来达到切换层级之后近大远小的效果,需要设置矩阵的m34值,首先来看看transform的结构:

struct CATransform3D
{
  CGFloat m11, m12, m13, m14;
  CGFloat m21, m22, m23, m24;
  CGFloat m31, m32, m33, m34;
  CGFloat m41, m42, m43, m44;
};

其中m34就是用来设置layer的透视效果,也就是近大远小,需要和其他(x、y)轴的变动来结合看才能看出效果。
如果m34为0,则不形变,只是单纯的切换了显示层级。
m34值越大,透视效果越明显。
比如以下swift例子:

var t = CATransform3DIdentity
t.m34 = -(1 / 500)
t = CATransform3DTranslate(t, xDispNew, 0.0, zDispNew)
item.layer.transform = t;

其中需要注意的点是m34的值默认是CGFloat类型,所以这里swift能直接这么写,如果转换成OC,就会失效,因为在OC中-(1 / 500)的值为0。
所以转为OC:

CATransform3D transform = CATransform3DIdentity;
transform.m34 = -1.0/500.0;//注意类型
transform = CATransform3DTranslate(transform, xDistance, 0.0, zDistance);
item.layer.transform = transform;

今天把一个swift库翻译成OC时,这个点没注意,被坑了一会。。。

相关文章

  • CATransform3D Z轴变换的一个点

    想要通过变换Z轴来达到切换层级之后近大远小的效果,需要设置矩阵的m34值,首先来看看transform的结构: 其...

  • 三维变换与投影

    三维几何的矩阵变换: 平移变换: 比例变换: 绕X轴旋转: 绕Y轴旋转: 绕Z轴旋转: X轴反射变换: Y轴反射变...

  • OpenGL的基础变换与矩阵堆栈

    基础变换 视图变换 视图变换是应⽤到场景中的第⼀种变换,通过物体/观察者在Z轴上的移动,从而确定场景中的有利位置;...

  • Games101:作业1笔记

    实现模型和投影变换的矩阵 模型变换 只需要处理绕z轴旋转的变换,需要注意输入的角度非弧度。 投影变换 先将透视投影...

  • CATransform3D 使用

    struct CATransform3D { CGFloat m11(x轴缩放), m12(y轴切变), m13,...

  • OpenGL 基础变化与矩阵堆栈

    OpenGL中涉及的基础变化: 视图变换 视图变换是应用到场景中的第一种变换,通过物体/观察者在Z轴上的移动,确定...

  • OpenGL--- (七)OpenGL基础变化与矩阵堆栈

    基础变化 视图变换 视图变换是应用在场景中的第一种变换,通过物体/观察者在Z轴上的移动,确定场景中利于观察者的位置...

  • iOS中的3D变换(一)

    级别: ★★☆☆☆标签:「iOS」「Swift」「CATransform3D」「3D变换」作者: 大成小栈 审校...

  • iOS中的3D变换(二)

    级别: ★★☆☆☆标签:「iOS」「Swift」「CATransform3D」「3D变换」作者: 大成小栈审校: ...

  • 二、CATransform3D 特效详解

    iOS坐标系详解CATransform3D 特效详解iOS 3D变换 -- CALayer的transform矩阵...

网友评论

      本文标题:CATransform3D Z轴变换的一个点

      本文链接:https://www.haomeiwen.com/subject/stwazftx.html