【发布时间】:2010-10-08 17:52:16
【问题描述】:
这两者有什么区别?
我敢肯定他们各有利弊,在哪些情况下他们表现更好。
有比较这两者的资源吗?
动画效果更好吗(我想是 CATransform3D)?为什么?
另外我想我在某处读到文本清晰度可能是一个问题,在缩放文本方面是否更好?
【问题讨论】:
标签: iphone cocoa cocoa-touch core-animation core-graphics
这两者有什么区别?
我敢肯定他们各有利弊,在哪些情况下他们表现更好。
有比较这两者的资源吗?
动画效果更好吗(我想是 CATransform3D)?为什么?
另外我想我在某处读到文本清晰度可能是一个问题,在缩放文本方面是否更好?
【问题讨论】:
标签: iphone cocoa cocoa-touch core-animation core-graphics
一个用于线性二维变换,另一个用于三维投影变换。至少这是我可以从文档中收集到的。
如果您不需要将 3d 投影到屏幕上,请使用仿射变换。否则,使用 3d 变换。 3d 变换本质上是一个 4x4 矩阵,而 2d 仿射矩阵是 3x2。
【讨论】:
正如 MSN 所说,它们用于不同的情况。 CGAffineTransform 用于 NSView、UIView 和其他 2-D 核心图形元素的 2-D 操作。
CATransform3D 是一个核心动画结构,可以对 CALayers 进行更复杂的 3-D 操作。 CATransform3D 具有与 OpenGL 模型视图矩阵相同的内部结构,当您意识到 Core Animation 是基于 OpenGL 构建的(CALayers 是 OpenGL 纹理的包装器等)时,这是有道理的。我发现这种内部结构的相似性,再加上 Apple 提供的一些不错的辅助函数,可以让你做一些简洁的 OpenGL 优化,正如我发布的here。
在选择使用哪个时,问问自己是要直接在 2-D 空间中使用视图 (CGAffineTransform) 还是使用 3-D 中的底层核心动画层 (CATransform3D)。我更频繁地使用 CATransform3D,但那是因为我花了很多时间在 Core Animation 上。
【讨论】: