¿Cómo hacer una captura de pantalla del área visible de UIScrollView?

¿Cómo hago una captura de pantalla 1: 1 del área visible de UIScrollView? El contenido puede ser más grande o más pequeño que los límites de UIScrollView, así como medio oculto (he implementado el desplazamiento personalizado para contenido más pequeño, por lo que no está en la esquina superior izquierda). He logrado el resultado deseado en el simulador, pero no en el dispositivo en sí:

-(UIImage *)imageFromCombinedContext:(UIView *)background {
      UIImage *image;
      CGRect vis = background.bounds;
      CGSize size = vis.size;
      UIGraphicsBeginImageContext(size);
      [background.layer affineTransform];
      [background.layer renderInontext:UIGraphicsGetCurrentContext()];
      image = UIGraphicsGetImageFromCurrentImageContext();
      UIGraphicsEndImageContext();
      CGImageRef imref = CGImageCreateWithImageInRect([image CGImage], vis);
      image = [UIImage imageWithCGImage:imref];
      CGImageRelease(imref);
      return image;
}

Respuestas a la pregunta(8)

Su respuesta a la pregunta