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