Como faço para capturar UIImage do conteúdo completo do UITableView / UIScrollView e fazê-lo funcionar em um dispositivo ios

Eu estou usando este pedaço de código maravilhosamente eleganteObtendo uma captura de tela de um UIScrollView, incluindo partes fora da tela para capturar todo o conteúdo de um UITableView para ser exportado para um UIImage.

UIGraphicsBeginImageContextWithOptions(self.controller.tableView.contentSize, YES, 0);
{
    CGPoint savedContentOffset = self.controller.tableView.contentOffset;
    CGRect savedFrame = self.controller.tableView.frame;

    self.controller.tableView.contentOffset = CGPointZero;
    self.controller.tableView.frame = CGRectMake(0, 0, self.controller.tableView.contentSize.width, self.controller.tableView.contentSize.height);

    [self.controller.tableView.layer renderInContext: UIGraphicsGetCurrentContext()];
    image = UIGraphicsGetImageFromCurrentImageContext();

    self.controller.tableView.contentOffset = savedContentOffset;
    self.controller.tableView.frame = savedFrame;
}

UIGraphicsEndImageContext();

Ele funciona fantasticamente bem no simulador, no entanto, quando eu executo este código em um dispositivo iOS (iphone 4s) eu recebo um pulo completo dos seguintes erros quando esse método é chamado:

[self.controller.tableView.layer renderInContext: UIGraphicsGetCurrentContext()];

Erros:

Error: CGContextTranslateCTM: invalid context 0x2924b0
Error: CGContextDrawImage: invalid context 0x2924b0
Error: CGContextRestoreGState: invalid context 0x2924b0
Error: CGContextSaveGState: invalid context 0x2924b0
Error: CGContextScaleCTM: invalid context 0x2924b0
Error: CGContextClipToRect: invalid context 0x2924b0
etc...

Este código funciona bem quando a tabela exibe o tamanho do conteúdo dentro de seus limites, mas assim que é maior que seus limites (mesmo em 1 pixel), ele entra em um loop infinito dos erros acima. Mas isso só acontece no dispositivo. Não o simulador.

Alguma ideia?

questionAnswers(1)

yourAnswerToTheQuestion