1

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

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

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

这是出现的图像: 白色/黑色条纹弹出框

我的原始图像主要是带有图案的深灰色调。它保存为 PNG 并复制到我的项目中。它甚至处于源代码控制之下。更奇怪的是,当我将图像更改为完全不同的图像时,它会起作用。

我已重命名、重新导入等。似乎没有任何效果。

有任何想法吗?这个白色/黑色图像来自哪里?我怎样才能解决这个问题?

4

1 回答 1

4

您的应用程序加载的 PNG 不是您添加到应用程序包中的 PNG 的逐字节副本。XCode 对其进行了一些更改,将通道按 BGR 顺序排列并弄乱了 alpha。请参阅iPhone“优化”PNG 上的这篇文章

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

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

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

显示常规选项卡的预览检查器

显示 PNG 选项卡的预览检查器

编辑:可以防止 XCode 更改您的文件。在“构建设置”中的“打包”下,有“压缩 PNG 文件”选项。如果您需要完全复制项目中的 PNG 文件,请将其关闭。您的应用将需要更多时间来加载图像,但您可以将 PNG 文件压缩成更小的尺寸。请参阅Xcode 的内置(反)优化

在此处输入图像描述

于 2012-04-21T23:37:52.360 回答