高分辨率图像和视网膜显示

是iOS应用程序开发和devise的新手。 我想知道这两个问题:

我可以创build一个高分辨率的图像和使用它的所有设备(视网膜或非视网膜)? (为什么要创build一个非视网膜设备有意识的低分辨率图像?为什么不能简单的高分辨率?)…我希望这不是一个愚蠢的问题!

我们这里的“高分辨率”究竟意味着什么? '1024像素×1024像素'? 视网膜显示真的有多高?

请帮忙吗?

“高分辨率”意味着iOS(和OSX)上每个维度的像素的两倍。 因此,如果非视网膜显示器上的图像为23×10像素,则其高分辨率版本的尺寸必须为46×20像素。

如果您将这样的高分辨率图像命名为lowResImageName @2x .png,系统将自动select视网膜设备上的高分辨率图像。

正如其他人所说的,您可以使用特殊的低分辨率图像来最大限度地提高质量(因为您可以select从低分辨率的图像等等中留下细节),并最大限度地减less内存占用(因为非视网膜变体的一半到目前为止视网膜版本的RAM)。

这也有助于思考非视网膜像素,因为一个非视网膜像素等于一个“显示点”,即iOS测量尺寸的单位。

iOS设备的分辨率如下:

  standard retina iPhone, iPod Touch 320 x 480 640 x 960 iPad 768 x 1024 1536 x 2048 iPhone 5 - 640 x 1136 

为什么要创build一个低分辨率的图像? 因为它会自动在非视网膜设备上使用,节省内存。

对于一些可以正常工作的图像,但对于某些图像(例如,如果图像有一些精美的文字),当自动缩小时,它们会显得锯齿状或扭曲。 也可能有些情况下,你想要显示不同的东西(我偶尔有很酷的渐变效果的图像,只是看起来不正确的低分辨率设备,所以我不得不删除一些细节在低分辨率图像到让它看起来好吧)。

另一个答案也是正确的,如果你允许这两种情况下,低分辨率设备将只加载低分辨率的图像到内存,所以应用程序将使用较less的内存。 这只是针对这些情况的一种优化,但仍然有帮助,因为通常情况下,您可以认为低分辨率设备由于年龄较大而开始使用内存较less。

视网膜graphics,你提到的高分辨率graphics应该是宽度和高度的两倍。 我的意思是,在所有iPhone大小的设备上,屏幕的大小是320点,480点。 在非视网膜设备上,转换为320像素×480像素。 在视网膜设备上,这转换成640×960像素的像素。 在水平和垂直方向上都是双重的。

这意味着,你应该有两个版本的所有图像资产。 所以,如果你在屏幕上想要的图像是44点宽44点,你应该有两个图像… Image.png将44像素乘44像素,Image@2x.png这将是88像素×88像素(视网膜设备,这是@ 2x代表)。

为什么有两个版本,而不只是高雷兹版本? 因为它需要处理能力来将较大的版本压缩成较小的版本。 刚分辨率较低的版本就容易多了,而且还可以节省宝贵的内存。

第一个问题由H2CO3回答。 你在旧设备上安全的存储(想想iPhone 3G,许多现在的应用程序非常慢,但编码良好的应用程序仍然工作正常)

高分辨率是什么意思?

例如,在非视网膜设备上,您可以使用[UIImage imageNamed:"example.png"]显示一些300×200像素的[UIImage imageNamed:"example.png"]

高分辨率意味着,你有一个600×400像素的额外example@2x.png ,即双倍大小。 那么,你的应用程序的规模更大,两个设备都有适当的graphics,但你在旧设备上节省内存(这将不得不分配4倍的内存,没有增加用户的改进,因为它仍然只有一个300×200像素的显示器600×400像素图像的空间)。