【发布时间】:2012-01-27 14:39:12
【问题描述】:
我正在尝试手动强制 iOS 加载文件图像文件的 2x 版本。我这样做是为了节省资源 - 我需要 iPhone 版本的图形,并且我想以 1:1 的比例在 iPad 版本中使用它。
为此,我不能使用 initWithContentsOfFile,因为即使我在文件名中添加了 x2,iOS 也会为我提供 x1 版本。相反,我使用以下代码:
NSString *filename = [myImage filenameWithSuffix:@"@2x"];
UIImage *image = [[UIImage alloc] initWithCGImage:[[UIImage imageWithData:[NSData dataWithContentsOfFile:filename]] CGImage]
scale:1.0
orientation:UIImageOrientationUp];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
这行得通。我 100% 确定它正在使用 x2 版本(我更改了该图形以确保)。
但是,当它以正确的尺寸显示在屏幕上时,它是模糊的。事实上,看起来 x1 版本被炸毁了 200%,所以 iOS 对我的形象做了一些奇怪的事情。
我已确保在像素边界上绘制图像。
更新:
即使我创建另一个没有 x2 后缀的图像文件并使用 initWithContentsOfFile 加载它,它仍然是模糊的。所以这与它的加载方式无关。
除了像素错位之外,还有什么会导致图像质量下降?
请注意,我已经截取了屏幕截图,并将图像与 Photoshop 中的原始图像进行了比较。它的大小完全相同,因此缩放不是问题。
【问题讨论】:
-
据我所见,您应该同时拥有正常图像和“@2x”图像,并且操作系统将根据屏幕分辨率放置图像,而无需指定比例。您是否尝试过仅使用普通名称并让操作系统为您获取“@2x”?
-
原来这与x2方面无关。有关详细信息,请参阅我的更新。
标签: iphone ios ipad uiimage scaling