我经常需要将两个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);

10-08 05:51