带有 Xcode 4.3.1 的 iOS 5.1:[UIColor colorWithPatternImage:] 奇怪的行为仅在设备上

Posted

技术标签:

【中文标题】带有 Xcode 4.3.1 的 iOS 5.1:[UIColor colorWithPatternImage:] 奇怪的行为仅在设备上【英文标题】:iOS 5.1 with Xcode 4.3.1: [UIColor colorWithPatternImage:] strange behavior only on device 【发布时间】:2012-03-26 17:10:45 【问题描述】:

当我在 Xcode 4.3.1 和 ios 5.1 中编译我的应用程序时,我注意到只有在实际设备上才有背景纹理的奇怪行为。如下截图所示,纹理图块之间有 1px 的间隙。

我的纹理是 150x150 和 300x300 2x。

到目前为止,我已经测试了相同的构建:

模拟器 iPhone/iPad 5.0/5.1:没有错误 运行 5.0.1 的 iPhone/iPad:没有错误 运行 5.1 的 iPhone/iPad:越野车

【问题讨论】:

线条是否每隔 150 像素出现一次?也有竖线吗? 只有水平线而不是垂直线,是的,它在视网膜上每 300px 出现一次 我可以确认我也遇到了这个错误,但我不确定是不是因为 iOS 5.1 我目前的解决方法是将图案图像设为 960 像素。所以我只是平铺了图案以适应 480x480。目前看来还好。 您是否仔细检查了资源以确保它们不包含杂散像素,或者尝试平铺不同的资源? 【参考方案1】:

以防万一其他人遇到此问题并使用 pngoptimizer,请尝试不优化的新 png。

我遇到了同样的问题,并花了最后 4 个小时试图解决它。 最后我意识到它是来自 pngoptimizer 工具的 png 文件,它在 iOS 5.1 之前总是可以工作,但是随着更新,相同的 png 文件在底部产生了这条细线。奇怪的是,这只发生在设备上而不是模拟器上,这会欺骗你很多,因为你认为它不可能是图形。事实上确实如此。

【讨论】:

我尝试在 Photoshop 优化和不优化的情况下保存 PNG,但两者都不起作用。【参考方案2】:

自 5.1 以来,我也遇到了同样的问题。我通过对 Photoshop 中的图像执行以下操作来解决它。您可能可以在其他工具中执行相同的操作。

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

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

    将您在步骤 1 中复制的图像粘贴到此图像中

    保存文件并使用此文件。

执行此操作后,文件在设备上正确显示,我不必求助于创建显示大小的图像。

【讨论】:

所以你在这之后就不优化 PNG 了吗?使用 Photoshop 简单地“保存”会创建最小 49kb 的文件大小,我不希望这样。 also 对我有用:使用 Pixelmator 我将图像导出为 PNG,仅此而已:) 通过 Pixelmator 确认修复。没有任何特殊选项的保存就可以了。优化保存的图像将再次导致问题。 谢谢,这确实是一个错误,但至少我现在已经修复了它! 我在 5.1 中也遇到了这个问题,并提交了 rdar://11069678 。它似乎是 any PNG8 或灰度 PNG 文件中的最后一行像素(基本上,任何无法通过 Apple 的 pngcrush 工具进行预乘优化的 PNG 文件)【参考方案3】:

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

【讨论】:

以上是关于带有 Xcode 4.3.1 的 iOS 5.1:[UIColor colorWithPatternImage:] 奇怪的行为仅在设备上的主要内容,如果未能解决你的问题,请参考以下文章

带有情节提要的 presentViewController 显示黑色视图 iOS 7.1 xcode 5.1

XCode 4.4 iOS 5.1 模拟器问题

带有 xcode 5.1 的 cordova 3.4 不会使用最新的文件传输插件构建

Xcode 5.1 - iOS 7.1 错误

Xcode 7 警告!是为比被链接 (5.1) 更新的 iOS 版本 (5.1.1) 构建的

XCode 5.0.1 和 iOS 5.1 模拟器问题