视网膜设备(iPod touch)或模拟器(iPhone 4)上未显示@ 2x视网膜图像

时间:2012-01-13 04:19:10

标签: iphone ios retina-display

这是我第一次尝试为视网膜或非视网膜设备设计两个版本的图像,所以我怀疑我做错了,但我创建了两个版本的图像,一个是302x193,另一个是604x386。它们分别命名为“displayCell1.png”和“displayCell1@2x.png”。

我还为@ 2x图像添加了水印,以确保我能够知道这是否是正在显示的图像。据我了解,我的视网膜设备(或iPhone 4模拟器)应自动检测@ 2x版本的存在并显示。但是,以下代码仅导致显示标准分辨率版本。任何帮助将不胜感激:

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {

    static UIImage *bgImage = nil;
    if (bgImage == nil) {
        bgImage = [[UIImage imageNamed:@"displayCell1.png"] retain];
    }
    cell.backgroundView = [[[UIImageView alloc] initWithImage:bgImage] autorelease];
    cell.backgroundView.contentMode = UIViewContentModeTopLeft;
}

我也只用imageNamed:@"displayCell1"尝试过,但也无济于事。

我可以根据需要添加更多细节。谢谢!

修改

我现在已经为两张图片添加水印,以确保我知道我在看什么。清理目标没有帮助,图像 包含在.app包中。

这是第一张图片:enter image description here

尺寸为302x193

以下是图片二:enter image description here

尺寸为604x386

这就是我在上面的代码运行时得到的结果(请注意,单元格高度被调高,因此屏幕上只显示一个单元格):

enter image description here

我在这里很难过。

4 个答案:

答案 0 :(得分:3)

在Finder中打开已编译的.app包(右键单击它并选择Show Package Contents)并确保图像的两个版本都在那里。如果Xcode忘记复制文件,您可能必须清理构建文件夹并重新编译。

答案 1 :(得分:1)

代码对我来说很好。

检查包中是否包含@ 2x图像。

答案 2 :(得分:0)

在随意使用模拟器设置后,我发现硬件>设备已设置为iPhone,而不是iPhone (retina)

enter image description here

这解决了模拟器的问题。不幸的是,尽管它现在在设备上工作,我还不完全知道是什么解决了设备的问题,因为我一直在尝试的任何调整都可能是关键,但是在回到设备之前,我只是在模拟器上尝试它们。

因此,对于将来浏览此内容的任何人,我会说尝试所有建议的内容。所有这些似乎都是可靠的推荐。

答案 3 :(得分:0)

我在xCode 5上遇到了类似的问题,并且在组织者的帮助下删除了派生数据并为我做了。