天天看点

iOS 仿射变换和3D变换

uiview的transform属性是一个cgaffinetransform类型,用于在二维空间做旋转,缩放和平移。cgaffinetransform是一个可以和二维空间向量(例如cgpoint)做乘法的3x2的矩阵:

iOS 仿射变换和3D变换

paste_image.png

当对uiview应用变换矩阵,uiview图层矩形内的每一个点都被相应地做变换,从而形成一个新的四边形的形状。cgaffinetransform中的“仿射”的意思是无论变换矩阵用什么值,图层中平行的两条线在变换之后任然保持平行.

cgaffinetransformidentity

iOS 仿射变换和3D变换

图中,灰色为旧图,蓝色为变化后的新图.

<a href="https://zsisme.gitbooks.io/ios-/content/chapter5/affine-fransforms.html" target="_blank">https://zsisme.gitbooks.io/ios-/content/chapter5/affine-fransforms.html</a>

catransform3d可以让视图在3d空间内移动或者旋转.和cgaffinetransform类似,catransform3d也是一个矩阵,但是和2x3的矩阵不同,catransform3d是一个可以在3维空间内做变换的4x4的矩阵.

这里讲的很好:

<a href="https://zsisme.gitbooks.io/ios-/content/chapter5/3d-transform.html" target="_blank">https://zsisme.gitbooks.io/ios-/content/chapter5/3d-transform.html</a>

<a href="https://tech.imdada.cn/2016/06/21/ios-core-animation/" target="_blank">https://tech.imdada.cn/2016/06/21/ios-core-animation/</a>