Ios4 在iOS设备上运行应用程序时,图像不会显示

Ios4 在iOS设备上运行应用程序时,图像不会显示,ios4,uiimageview,retina-display,Ios4,Uiimageview,Retina Display,我在我的应用程序中有标题为“如此”的图像: image~iPhone.png image@2x~iPhone.png 在interface builder中,我正在将image.png加载到我的UIImageView中。我还使用imageWithContentsOfFile以编程方式将一些图像加载到不同的视图中。当我在模拟器中运行时,图像都可以正常加载,但当我在设备上运行时,没有图像。如果我在interface builder中使用图像的全名,它可以工作,但我希望iOS能够区分高分辨率和低分辨率

我在我的应用程序中有标题为“如此”的图像:

image~iPhone.png image@2x~iPhone.png

在interface builder中,我正在将image.png加载到我的
UIImageView
中。我还使用imageWithContentsOfFile以编程方式将一些图像加载到不同的视图中。当我在模拟器中运行时,图像都可以正常加载,但当我在设备上运行时,没有图像。如果我在interface builder中使用图像的全名,它可以工作,但我希望iOS能够区分高分辨率和低分辨率。我尝试了很多不同的方法,但无法解决这个问题。我在调试器中也看到此错误:

无法加载从捆绑包中标识符为“com.mycompany.myproject”的nib引用的“image.png”图像

Xcode 4 部署目标4.1 基本SDK 4.3


感谢您的帮助。

iOS不会自动为这样的设备选择正确的图像。您必须编写代码来检查它是哪个设备,并按全名设置图像

e、 g.
if([[UIScreen mainScreen]scale]==2)//设置高分辨率图像

或者,您可以在两者中使用相同的图像,并将内容模式设置为“按比例填充”。看起来是一样的


编辑:尝试写
~iphone
(小写),或者干脆不在文件名上写
~iphone
。如果你的应用程序不是通用的,那么编写
~iphone
后缀完全是毫无意义的。

好吧……经过大量的实验,我让它工作了

我有两张照片,名字是:

  • image@2x~iPhone.png
  • image~iPhone.png
  • 我试着用IB或imageWithContentsOfFile加载它们

    • image.png
    这在模拟器中运行良好,但在我的设备上不起作用。我刚刚得到一个空白的白色屏幕上的图像应该是

    我最终将高分辨率图像重命名为:

  • 形象~iPhone@2x.png
  • 在引用我的图像时,将“@2x”修饰符移动到设备修饰符(~iPhone)之后,使其能够按照我理解的方式工作,而我理解它应该阅读苹果的文档。我的印象是,在引用图像时不需要包含设备修改器,但我必须这样做

    总而言之,我现在正在使用 -image~iPhone.png 在IB中引用我的图像,并对一些图像进行编程。我现在让iOS识别我在视网膜屏幕上,并相应地加载@2x图像。因此,@2x修饰符必须放在末尾,~iPhone修饰符必须包含在“.png”的名称中


    这就是我的工作。希望它能帮助别人。请注意,我只为iOS4.1及以上版本构建应用程序,因此如果您支持以前的版本,则可能会出现一些问题。

    iOS文件系统区分大小写,设备修饰符应为小写,而不是小写

    image~iphone.png
    image@2x~iphone.png
    
    @2x位于设备修改器之前


    请参阅

    谢谢您的回答,但这似乎与《资源编程指南》中的内容相矛盾:“当底层设备具有高分辨率屏幕时,捆绑包和图像加载例程会自动查找带有@2x字符串的图像文件。”以及“系统自动确定图像的哪个版本最合适并加载它。同样,在使用或绘制该图像时,您不必知道它是原始分辨率还是高分辨率版本。图像绘制例程会根据加载的图像自动进行调整。“我找到了它不起作用的原因。请参阅我更新的答案。我知道这与文档所说的相矛盾,但根据我的经验,手动检查或始终使用高分辨率图像并让系统将其缩小更安全。