我是 iOS 应用程序开发和设计的新手。我想知道这两个问题:
我可以创建高分辨率图像并将其用于所有设备(无论是视网膜还是非视网膜)?(为什么要故意为非视网膜设备创建低分辨率图像?为什么不能一切都简单地高分辨率?)......我希望这不是一个愚蠢的问题!
我们在这里所说的“高分辨率”到底是什么意思?'1024 像素 X 1024 像素' ? 视网膜显示器的“高”到底有多高?
请问有什么帮助吗?
“高分辨率”是指 iOS(和 OSX)上每个维度的两倍像素。因此,如果您在非视网膜显示屏上拥有 23x10 像素的图像,则其高分辨率版本的大小必须为 46x20 像素。
如果您将高分辨率图像命名为:lowResImageName @2x
.png,系统将自动选择 Retina 设备上的高分辨率图像。
正如其他人所说,您使用特殊的低分辨率图像来最大限度地提高质量(因为您可以选择在低分辨率图像中留下精细的细节等)并最大限度地减少内存占用(因为非视网膜变体有一半到目前为止视网膜版本的 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
为什么要创建低分辨率图像?因为它会自动在非视网膜设备上使用,节省内存。
对于某些可以正常工作的图像,但对于某些图像(例如,如果您的图像有一些精美的文本),它们会在自动缩小时看起来参差不齐或扭曲。在某些情况下,您可能希望以不同的方式显示某些内容(我偶尔会看到带有酷渐变效果的图像在低分辨率设备上看起来不正确,因此我不得不删除低分辨率图像中的一些细节以让它看起来不错)。
另一个答案也是正确的,如果您允许这两种情况,低分辨率设备只会将低分辨率图像加载到内存中,因此应用程序将使用更少的内存。这只是针对这些情况的优化,但它仍然很有帮助,因为通常您可以假设低分辨率设备开始时内存较少,因为它们较旧。
Retina 图形,即您提到的高分辨率图形,应该是宽度和高度点值的两倍。我的意思是,在所有 iPhone 大小的设备上,屏幕尺寸为 320 点乘 480 点。在非视网膜设备上,转换为 320 x 480 像素。在 Retina 设备上,这转换为 640 x 960 像素。在水平和垂直方向上,一切都是双倍的。
这意味着,您应该拥有所有图像资产的两个版本。因此,如果您想要在屏幕上显示 44 点宽 x 44 点高的图像,您应该有两个图像...... Image.png 将是 44 像素 x 44 像素,Image@2x.png 将是88 像素 x 88 像素(对于视网膜设备,这是 @2x 表示的)。
为什么有两个版本,而不仅仅是高 rez 版本?因为它需要处理能力将较大的版本“压缩”成较小的版本。已经拥有较低分辨率的版本要容易得多,并且您可以节省宝贵的内存。
H2CO3 回答了第一个问题。保护旧设备上的内存(想想 iPhone 3G,许多当前的应用程序非常慢,但编码良好的应用程序仍然可以正常工作)
高分辨率是什么意思?
例如,在非视网膜设备上,您可以example.png
使用[UIImage imageNamed:"example.png"]
.
高分辨率意味着,您有额外example@2x.png
的 600x400 像素,即双倍尺寸。然后你的应用程序大小更大,两个设备都有适当的图形,但你在旧设备上节省了内存(这将不得不分配 4 倍的内存而没有为用户带来额外的改进,因为它仍然只有 300x200 像素显示- 600x400 像素图像的空间)。