视网膜非视网膜兼容的UIImage堆叠和定位

时间:2012-03-29 04:38:28

标签: ios image uiimageview uiimage retina-display

我经常需要将两个UIImages定位并堆叠到UIView中。 例如,在照片周围(后面)放置一个相框,然后显示它。通过修改图像的帧来指定位置对于Retina和非视网膜设备都不起作用,因为硬编码的帧值不会缩放。

例如,如果我的相框中的图片为56x56 (retina)且实际图片为52x52 (retina),则需要将其放置在CGRectMake(2, 2, 54, 54)的顶部。相框。但如果用户处于非视网膜状态,则会失败,因为这些值不正确(他们现在是CGRectMake(1, 1, 27, 27))。

分辨率安全图像处理的正确方法是什么?有没有办法合并两个图像(每个图像都有常规和@2x.pngs),可以在任何一种屏幕上正确显示?

1 个答案:

答案 0 :(得分:1)

您可以使用UIScreen scale属性。这是一个只读的财产。在iPhone 4(非视网膜显示器)之前的设备中,该值将为1.0,但是视网膜显示器的值为2.0。因此,您可以将此属性存储到局部变量,例如称为CGFloat scaleFactor,并将其与上面的值相乘:

CGFloat scaleFactor=[[UIScreen mainscreen] scale];
... = CGRectMake(1.0*scalefactor,1.0*scaleFactor,27.0*scaleFactor,27.0*scaleFactor);