【发布时间】:2011-09-29 12:52:49
【问题描述】:
我正在开发一个 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 图像)
- background@2x.jpg(适用于 2x / 视网膜 显示)。
但是当我构建和运行时,一切都运行良好,除了没有背景。我所有的其他小部件都在那里,但是有白色背景并且没有显示图像。
接下来,我为我的背景创建了两个 png 图像,将其添加到项目中并运行。这次展示了我的背景。我很困惑,因为根据documentation jpg 图像可以在 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 之外,我还有其他选择吗?
编辑:
嗯,两天后的问题,零答案。我已经将所有图像转换为 png,并且我的项目的那部分已经完成(因为我的项目等不及了..)。尽管如此,为了我自己和未来面临这个问题的每个人,我想更多地了解这个问题。至少有人可以确认这确实是一个苹果虫。我开始赏金,以便更多人可以看到此线程。
再次编辑
此赏金结束还剩 2 天。感谢所有回复的人。但让我澄清一件事。我已经说过我已将所有图像转换为 png 并继续前进。我只是想确认imageNamed 以同样的方式处理 jpg 和 png 文件。文档肯定会说它会(除非 Apple 将它写在 UIImage 文档之外的其他地方)。如果文档正确,那么由于两个可能的原因,我的代码失败了
-
这是一个错误
imageNamed。如果这是原因,那么除了提交错误报告、将图像更改为 png 或编写包装器(就像 Chandan 在他的回答中所说的那样)并继续前进之外,我没有太多选择。 - 我使用的 jpeg 图片有问题。好吧,我不是一个Photoshop的家伙。但是我用 RGBA jpg 图像。如果图像确实重要,我准备问我的设计师 朋友并提供更多信息。
还有一件事。 This 帖子也只是讲述了这个问题。但他不知道背后的原因。所以我并不孤单。
编辑:结束
嗯,这与图像本身有关。我用谷歌搜索并下载了一些示例 jpeg 图像并使用它。其中一些正确显示,而另一些则没有。由于boundy时间到了,我将boundy给PengOne,他试图重现错误并成功加载没有扩展名的jpg图像,让我可以使用更多图像。感谢所有试图提供帮助的人。
【问题讨论】:
-
我认为 PNG 更适合在移动设备上显示图像 - 它们很小,支持 alpha 通道并且不需要压缩。
@2x没有问题。 :) -
为什么要用jpg?在 iOS 上应尽可能首选 png。编辑:Kashiv 更快。 :) 我会使用批处理转换器...
-
另外,推荐 iOS 使用 png,因为 Apple 在编译时会进行一些“优化”,使设备加载 png 的效率更高,但这些优化也会使 png 在其他设备上不再可见。 Jeff Lamarche 在这里讨论iphonedevelopment.blogspot.com/2008/10/…
-
您是如何生成@2x jpg 图像的?似乎微小的像素变化可以推迟事情......这是关于这个主题的好读物globalmoxie.com/blog/designing-for-iphone4-retina-display.shtml。始终按比例缩小,拍摄@2x 图像,并将其调整为 50% 并将其用作您的 1x 图像,这对我始终有效。
-
当我将 2x 文件和 1x 文件存储在不同的文件夹中时,我也遇到了问题。使用相同的图像,单独的文件夹给了参差不齐的 2 倍使用率,相同的文件夹完美地工作......去图。
标签: iphone ios uiimage png jpeg