calayerretina-displaycgbitmapcontext

How to use renderInContext: with CGBitmapContextCreate and Retina?


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?


Solution

  • 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];