iphone 4 - 雇用两倍大小的图像加载

时间:2010-07-06 08:48:16

标签: iphone ipad

我有3个版本的图像:“myImage~ipad.png”,“myImage~iphone.png”和“myImage@2x~iphone.png”。

显然,最后一个的大小是第二个的两倍。

我正在使用

加载它们
UIImage *imageU = [UIImage imageNamed:@"myImage.png"];
UIImageView *myView = [[UIImageView alloc] initWithImage:imageU];
[self.view addSubview:myView];
[myView release];

图像在iPad和3G / 3GS上运行良好,但在iPhone 4上没有,它看起来很大,大小只有两倍。 iPhone 4的大小翻了一倍“myImage@2x~iphone.png”??? (!)

有什么不对?

感谢。

2 个答案:

答案 0 :(得分:3)

难以置信!苹果的另一个错误或坏文件。

这就是docs所说的:

  

更新图像资源文件

     

在iPhone OS 4中运行的应用程序   现在应该包括两个单独的文件   对于每个图像资源。一个档案   提供标准分辨率版本   一个给定的图像,第二个   提供高分辨率版本   相同的形象。命名约定   对于每对图像文件是   如下:

     

标准:ImageName device_modifier。 filename_extension

     

高分辨率:ImageName @ 2x device_modifier。 filename_extension

     

和    每个部分   name指定通常的名称和   文件的扩展名。该    部分是可选的   并包含字符串~ipad   或~iphone。你包括其中一个   要指定时的修饰符   不同版本的图像   iPad和iPhone。包含了   @ 2x修饰符用于高分辨率   图像是新的,让系统知道   图像是高分辨率   标准图像的变体。

所以,根据文档你应该像我一样命名你的图像:“myImage~iphone.png”(lores),“myImage @ 2x~iphone.png”(雇用)和“myImage~ipad.png”(的ipad)。

由于文档记录错误(与他们的文档一样)和错误的SDK,这是现实:

  1. 你应该将你的文件命名为“myImage~iphone.png”(lores),“myImage~iphone@2x.png”(雇用)和“myImage.png”(ipad)。
  2. 在其他词语中:将@ 2X放在最后,而不是Apple推荐的中间位置和不要在iPad图像上放任何TILDE STUFF 。但这并非全部:即使你做了这一切,你也只能使用[UIImage imageNamed:...]加载你的图像,这意味着你的所有图像都将被缓存。这是因为ImageWithContentsOfFile不能在SDK 4上运行,即使在文档中也有说明。

    完整的解决方案涉及使用THIS STUFF

    感谢Apple为这半熟的东西。

    更新到这个答案: 它表明我是对的。这是一个错误。我已于7月8日向苹果报告,今天我收到了他们的消息:“这是Bug ID#8161396的后续行动。经过进一步调查后,已经确定这是一个已知问题,目前正在调查中本问题已在我们的错误数据库中以原始错误ID#8084451提交。“

答案 1 :(得分:1)

它没有,你做错了,检查imageview的矩形,iphone4上的@ 2x图像与旧手机上的较小图像具有相同的坐标点和大小

NSLog(@"%f %f %f %f",myView.frame.origin.x,myView.frame.origin.y,myView.frame.size.width,myView.frame.size.height);