How to use renderInContext: with CGBitmapContextCreate and Retina?

1.9k Views Asked by At

I have manually created a CGBitmapContext:

bitmapContext = CGBitmapContextCreate( myImageData, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big );

And drawing a layer to it:

[self.myView.layer renderInContext:bitmapContext];

However, on Retina my layer renders only at half the original size.

Setting the contentScaleFactor property on the UIView doesn't change anything.

What's the right way to do this?

1

There are 1 best solutions below

0
anna On BEST ANSWER

Of course the answer came to me the minute I asked the question. Simply do this:

float scale = self.myView.contentScaleFactor;

CGContextScaleCTM(context, scale, scale);

[self.myView.layer renderInContext:context];