【发布时间】:2012-02-16 20:56:40
【问题描述】:
我正在使用带图案的图像显示我的视图背景。
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"main_bg_tile.png"]];
平铺图像大小为 1x512 像素。 512px,因为根据 Apple 文档,由于性能原因,平铺图像的大小应该是 2 的幂。在我的分析之后,我发现如果我使用的图像不是 2 的幂,iOS 会为该图像创建一个后备存储(比使用 2 的幂图像消耗更多的内存)。
在 iOS 4 和 5 上一切正常,但在 iOS 3 上却不行。
在 iOS 3 上,图案图像的相位不正确。似乎它从左下角开始绘制图像,而不是 Apple 文档中所述的左上角。
默认情况下,返回颜色的相位为 0,这会导致图像的左上角与绘图原点对齐。要更改相位,请将颜色设为当前颜色,然后使用 CGContextSetPatternPhase 函数更改相位。
我找到了一个解决方法: 使用平铺图像的实际大小而不是 2 的幂。但是这样我就失去了大小为 2 的图像的内存优势。
有人注意到这种行为吗?如何在 iOS 3 上正确解决此问题?
【问题讨论】: