在物理设备上测试时图像的白色和黑色条

时间:2012-04-21 23:12:01

标签: ios image runtime-error

我正在测试我的iOS应用程序,一切顺利在iOS模拟器上(当然),但是当我在物理设备上测试时,一些奇怪的事情开始发生。

我在UIImageView中有一个图像,我正在使用它作为弹出式背景。当我在设备上运行应用程序时,它显示为黑白条纹图像。

没有错误,没有警告,没有内存问题(据我所知),并且调试窗口中没有任何内容出现。

这是出现的图像: White/Black striped popover

我的原始图像主要是带有图案的深灰色调。它将保存为PNG并复制到我的项目中。它甚至在源头控制之下。更令人陌生的是,当我将图像更改为完全不同的图像时,它可以正常工作。

我已经重命名,重新导入等等。似乎没什么用。

有什么想法吗?这个白/黑图像来自哪里?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

您的应用程序加载的PNG不是您添加到应用程序包中的PNG的逐字节副本。 XCode对它进行了一些更改,将通道置于BGR顺序并弄乱了alpha。请参阅this post on iPhone "Optimized" PNGs

这是推测,但你的图像的某些属性 - 通道顺序,位深度,alpha或类似 - 可能不是XCode所假设的。然后它最终会交换它不应该的通道值,从而破坏图像。 (如果你的图像是灰度的,只有一个通道,那就不应该是问题了。)

尝试创建与原始图像大小相同的新空白图像,然后将背景图像的内容复制到新图像中。如果您的图片不透明,请确保它没有Alpha通道。

您可能还想在预览中打开问题图片,然后选择“查看” - > 'Show Inspector'。我已经附上了我在有效图像上看到的那种信息。

Preview Inspector showing General tab

Preview Inspector showing PNG tab

修改:可以防止XCode更改文件。在“构建设置”中的“打包”下,可以选择“压缩PNG文件”。如果您需要完全复制项目中的PNG文件,请将其关闭。您的应用会花费更多时间来加载图片,但您可以将PNG文件压缩为更小的尺寸。请参阅Xcode's built-in (de)optimization

enter image description here