我正在开发 iphone 应用程序并定位iOS 4.0或稍后。我正在尝试将图像添加到 UIImageView,并且图像位于jpeg格式。这就是我到目前为止所做的..
UIImageView *bgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 246.0)];
bgImageView.image = [UIImage imageNamed:@"background"];
[self.view addSubview:bgImageView];
[bgImageView release];
我添加了两张图片,
- background.jpg(正常 1x 图像)
-
[电子邮件受保护] /cdn-cgi/l/email-protection(对于 2x/视网膜
展示)。
但是当我构建并运行时,除了没有背景之外,一切都运行良好。我的所有其他小部件都在那里,但有白色背景并且图像未显示。
接下来,我为背景创建了两个 png 图像,将其添加到项目中并运行。这次我的背景被展示了。我很困惑,因为根据文档 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImage_Class/Reference/Reference.htmljpg 图像可以在 iphone 中通过 UIImage 使用。
我再次尝试使用我的 jpg 图像并将上面的代码更改为这样
UIImageView *bgImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 246.0)];
bgImageView.image = [UIImage imageNamed:@"background.jpg"]; //added extension
[self.view addSubview:bgImageView];
[bgImageView release];
当我运行上面的代码时,显示背景图像,但未加载 2x 图像。这表明我的 jpg 图像没有问题,而且它不是罪魁祸首。因此,当我只提供不带扩展名的图像名称时,png 文件(1x 和 2x)会加载到相应的设备上,而 jpg 文件根本不会加载。
看起来像一个错误(在 sdk 或文档中)。 iOS 4 即将迎来美好的一年。为什么没有人注意到它?除了将所有图像转换为 png 之外,我还有其他选择吗?
EDIT :
好吧,问题两天了,答案为零。我已经将所有图像转换为 png,并且我的项目的该部分已完成(因为我的项目等不及了..)。尽管如此,为了我自己,也为了将来遇到这个问题的每个人,我想更多地了解这个问题。至少有人可以确认这确实是苹果的一个bug。我开始悬赏,以便更多人可以看到这个帖子。
再次编辑
距离本次赏金结束还有 2 天。感谢所有回复的人。但让我澄清一件事。我已经说过我已经将所有图像转换为 png 并且继续前进。我只是想确认一下imageNamed
以相同方式处理 jpg 和 png 文件。文档当然说它会(除非苹果在其他地方写过它)UIImage
文档)。如果文档正确,那么我的代码因两个可能的原因而失败
-
这是一个错误
imageNamed
。如果这是原因,那么除了提交错误报告、将图像更改为 png 或编写包装器(就像 Chandan 在他的回答中所说)并继续前进之外,我没有太多选择。
-
我使用的 jpeg 图像有问题。好吧,我不是一个 Photoshop 爱好者。但我用过
RGBA jpg 图像。如果图像很重要,我准备询问我的设计师
朋友并提供更多信息。
还有一件事。This http://www.oogtech.org/content/tag/imagenamed/帖子也只是讲述了这个问题。但他不知道背后的原因。所以我并不孤单。
编辑:结束
嗯,这与图像本身有关。我用谷歌搜索并下载了一些示例 jpeg 图像并使用它。其中一些显示正确,有些则不正确。由于边界时间已到,我将边界交给 PengOne,PengOne 尝试重现该错误并成功加载没有扩展名的 jpg 图像,从而使我能够处理更多图像。感谢所有试图提供帮助的人。