iOS 5.1与Xcode 4.3.1: [UIColor colorWithPatternImage:]在设备上表现奇怪

29
当我使用Xcode 4.3.1和iOS 5.1编译我的应用程序时,我注意到只有在实际设备上才会出现背景纹理的奇怪行为。如下所示的屏幕截图中,纹理瓦片之间存在1像素的间隙。
我的纹理大小是150x150和300x300,@2x倍图。
到目前为止,我已经在以下设备上测试了相同版本:
  • 模拟器iPhone/iPad都是5.0/5.1:没有问题
  • iPhone/iPad运行5.0.1:没有问题
  • iPhone/iPad运行5.1:有问题

对比侧面截图


每隔150像素出现一条线吗?还有垂直线吗? - Mugunth
只有水平线而没有垂直线,是的,在Retina屏幕上每300像素出现一次。 - Kent Nguyen
我可以确认我也遇到了这个 bug,不过我不确定是因为 iOS 5.1 的缘故。 - chourobin
我的当前解决办法是将图案图片调整为960像素的因子。所以我只需将图案平铺以适应480x480即可。现在看起来还不错。 - chourobin
你是否仔细检查了资源,确保它们不包含杂散像素,或尝试使用其他资源进行平铺? - fearmint
3个回答

14

自从5.1版本以来,我也一直遇到相同的问题。我通过在Photoshop中对图像进行以下操作来解决它。你可能可以在其他工具中完成类似的操作。

  1. 加载文件,全选并复制到剪贴板

  2. 在Photoshop中创建一个与原图相同尺寸、RGB和8位深度、72像素/英寸分辨率、白色背景的新文件。

  3. 将步骤1中复制的图像粘贴到此图像中

  4. 保存文件并使用此文件。

完成这些操作后,文件在设备上正确显示,我不必制作与显示器大小相同的图像。


那么你之后不会优化PNG吗?仅仅使用Photoshop的“保存”功能就会创建一个至少49kb的文件大小,而我不想要这样。 - Kent Nguyen
2
这对我也起作用了:使用Pixelmator将图像导出为PNG格式,就这样 :) - nacho4d
1
请通过Pixelmator确认修复。不使用任何特殊选项进行保存即可。优化该保存的图像将再次导致问题。 - Kent Nguyen
谢谢,这肯定是一个 bug,但至少现在我已经修复了它! - Chris
2
我在5.1中也遇到了这个问题,并提交了rdar://11069678。它似乎是任何 PNG8 或灰度PNG文件的最后一行像素(基本上,任何不能被苹果的pngcrush工具预乘优化的PNG文件)。 - iccir
我的解决方案是将PNG文件保留为PNG8格式,添加额外的几行填充,然后在代码中裁剪掉它。 - iccir

9

我的解决方案是:在构建设置中将“压缩PNG文件”设置为“否”。在我的情况下,应用程序包的大小甚至比开启压缩还要小。我自己进行了图像优化。


5

如果有人遇到这个问题并且使用了pngoptimizer,请尝试使用未经过优化的新的png文件。

我遇到了同样的问题,花费了将近四个小时来解决它。最后我意识到,PNG优化工具生成的PNG文件在iOS 5.1之前总是能正常工作,但随着更新,同样的PNG文件会在底部产生一条细线。奇怪的是这只会在设备上出现,而不会在模拟器上出现,这会让你产生很多误解,因为你认为这不可能是图形的问题。事实上,它确实是。


我尝试从Photoshop中尝试保存PNG格式文件,包括优化和不优化两种方式,但都失败了。 - Kent Nguyen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接