服务器中的Retina图像在表格单元格中显示不正确

时间:2011-06-28 07:58:43

标签: iphone objective-c

我有一个表格,其中单元格的图像视图正由以前从服务器上拉下来的图像填充。所以:

[[cell imageView] setImage:[[[UIImage alloc] initWithContentsOfFile:filePath] autorelease]];

其中“filePath”是这些图像的位置。工作得很漂亮,直到我决定聪明并将视网膜显示图像添加到我的服务器。显示这些图像(显然是双倍大小),但是缩小了。我把它们标记为image@2x.png,希望iPhone能够知道如何处理它们,但显然这在这种情况下不起作用。

我看过讨论,我猜我需要对单元格imageView的contentsScale做一些事情,比如将它与屏幕比例匹配,但我不确定如何做到这一点。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:0)

从服务器无法自动下载视网膜图像。

你需要像

这样的控件
if (iphone == 4) image=img@2x.png
else image=img.png

获取正确的图像。

答案 1 :(得分:0)

您需要正确设置图像的比例因子。请检查UIImage

中的比例属性
  

如果从其文件中加载图像   name包括@ 2x修饰符,   scale设置为2.0。如果是文件名   不包括修饰语但是   在PNG或JPEG格式,并有一个   相关的DPI值,相应的   比例因子被计算和反映   在这家酒店。你也可以指定   一个明确的比例因子   从Core初始化图像   图形图像。所有其他图像都是   假设比例因子为1.0。

因此,您可以按上述方式阅读图片,从中获取CGImage并使用+ (UIImage *)imageWithCGImage:(CGImageRef)imageRef scale:(CGFloat)scale orientation:(UIImageOrientation)orientation创建新的UIImage。

更好的方法是检查视网膜图像的DPI,并使用图形程序将其设为144dpi。根据scale属性文档,这也可能有用。