14

Instruments 表示存在由核心动画制作的“未对齐的图像”。这意味着什么?

更新:我在 Instruments.app > Core Animation 中看到了这一点。

4

2 回答 2

22

我想了解更多关于您在哪里看到的信息,但我怀疑它指的是不是像素对齐的图像。Quartz 允许您在分数像素处绘制(回想一下,CGPoint 采用 CGFloats,而不是 NSIntegers),但它更昂贵并且容易产生一些模糊。您不能真正在分数像素上绘制,因此 Quartz 必须进行抗锯齿才能将其拉下来。这需要时间,而且肯定会损害 Core Animation 的性能。

Quartz 不会警告您正在绘制分数像素,而且它对文本特别不友好。因此,在您进行程序化布局时,您需要考虑这一点。

于 2009-05-29T00:00:41.440 回答
4

未对齐的视图会在绘制之前强制渲染器进行抗锯齿处理。

在这种情况下,“未对齐”意味着请求的显示点不直接映射到屏幕像素(例如,它可能在两个像素之间),因此必须绘制到两个相邻像素并消除锯齿以产生错觉它是在他们“之间”绘制的。

这几乎总是在计算视图的框架时发生(而不是在 Interface Builder 中指定),因为 CGRect 的 X 坐标、Y 坐标、宽度和高度是 CGFloats,因此允许使用小数值。

例如,一个以 (200.5, 35.5) 为中心的 100.8 x 50.1 像素的框是一个有效的框架,操作系统将尝试以它可以管理的最佳方式渲染它。仅单个像素所需的额外插值和抗锯齿开销就足以严重损害旧硬件的性能。

于 2012-04-05T21:12:18.550 回答