我经常需要将两个UIImages
定位并堆叠到UIView
中。
例如,在照片周围(后面)放置一个相框,然后显示它。通过修改图像的帧来指定位置对于Retina和非视网膜设备都不起作用,因为硬编码的帧值不会缩放。
例如,如果我的相框中的图片为56x56 (retina)
且实际图片为52x52 (retina)
,则需要将其放置在CGRectMake(2, 2, 54, 54)
的顶部。相框。但如果用户处于非视网膜状态,则会失败,因为这些值不正确(他们现在是CGRectMake(1, 1, 27, 27)
)。
分辨率安全图像处理的正确方法是什么?有没有办法合并两个图像(每个图像都有常规和@2x.pngs
),可以在任何一种屏幕上正确显示?
答案 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);