我知道Retina显示器的像素是非Retina显示器的2倍,但使用@2x版本与拍摄512 x 512图像并通过帧的大小进行约束有什么区别?
澄清:
如果我有一个72 x 72的按钮,在iPhone上显示它的正确方法是使用
image.png=72x72
image@2x.png=144×144<---固定:)TY
但是为什么不只使用1个图像:
image.png=512x512
做这样的事情:
UIImageView *myImage = [[UIImageView alloc] init ];
[myImage setImage:[UIImage imageNamed:@"image.png"]];
[myImage setFrame:CGRectMake(50, 50, 72, 72)];
我确信有一个很好的理由,我只是不知道它是什么,其他可能是较小的应用程序文件大小?
谢谢你的教育!
正确调整图像大小有几个很好的原因,但最主要的原因必须是图像清晰度:调整图像大小时,通常会出现使图像看起来模糊或像素化的伪影。通过创建正确大小的图像,您将确切地知道最终用户将在其屏幕上看到什么。
另一个原因是减少二进制文件的总文件大小:16x16图标占用的字节比512x512图像少几个数量级。
如果你需要第三个原因:像[UIImage imageWithName:@"xxxx"]这样的方便方法可以生成实际大小的图像,通常不需要额外的帧/边界代码。如果你知道尺码,你可以省去很多头疼的事。
因为调整图像大小时可能无法正确显示。也因为较大的图像使用更多的内存。但是,如果这两种情况对你来说都不是问题,你可以将一张图像用于视网膜和非视网膜显示器。
因为大型图像会消耗大量内存和CPU/GPU周期。另一个原因是缩小图像会导致像素级质量问题。
除了额外的内存和CPU之外,对图像进行下采样本身就是有损耗的。渲染得很清晰的线条变得粗糙。
@2x命名约定存在于源图像与显示图像大小完全相同的情况下。然后,你可以为非视网膜iPhone提供57x57应用程序图标,为视网膜显示iPhone提供114x114应用程序图标。
使用两张图片的主要优点是,这两张图片都可以由设计师手工制作,所以一切看起来都很好,不需要放大或缩小代码,这会耗费精力,降低性能,并可能包含错误。