自从视网膜显示,突然这段绘图代码似乎不再工作了。绘制的图像比以前稍微偏移,并且看起来有些拉伸。
我在 UIControl 子类的 -drawRect: 方法中绘制了一些东西。我发现 UIControl 内部的当前比例确实是 2.0。此代码从 UIImage 获取 CGImage,它可能对比例一无所知。它作为参数提供给现在也采用一些点值的方法。
CGContextDrawImage(context, CGRectMake(drawingRect.origin.x, drawingRect.origin.y, img.size.width, img.size.height), [img CGImage]);
注意:drawingRect 以点为单位。NSLog 中的 img.size.width 会以点为单位输出正确的值,而 [img CGImage] 会输出 @2x 图像以用于视网膜显示。我做了检查以验证这一点:
NSLog(@"image height = %f (CGImage = %d)", img.size.height, CGImageGetHeight([img CGImage]));
控制台输出:image height = 31.000000 (CGImage = 62)
我将如何处理这里的@2x 图像?我必须手动将每个值与比例相乘吗?但这也会破坏屏幕上实际可见的矩形,或者不是?