如何使用renderInContext:CGBitmapContextCreate和Retina?

ann*_*nna 4 calayer cgbitmapcontext retina-display

我手动创建了一个CGBitmapContext:

bitmapContext = CGBitmapContextCreate( myImageData, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big );
Run Code Online (Sandbox Code Playgroud)

并绘制一个图层:

[self.myView.layer renderInContext:bitmapContext];
Run Code Online (Sandbox Code Playgroud)

但是,在Retina上,我的图层仅渲染原始尺寸的一半.

在上面设置contentScaleFactor属性UIView不会改变任何东西.

这样做的正确方法是什么?

ann*_*nna 6

当然,在我问这个问题的那一刻,答案就出现了.只需这样做:

float scale = self.myView.contentScaleFactor;

CGContextScaleCTM(context, scale, scale);

[self.myView.layer renderInContext:context];
Run Code Online (Sandbox Code Playgroud)