我有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”??? (!)
有什么不对?
感谢。
答案 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,这是现实:
在其他词语中:将@ 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);