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