title: Capturing Screen of QLPreviewController causing problems in iOS 6
body: <p>On Apples Technical notes site, they posted code to screen capture. Everything works, except it does not capture files that are being previewed using QLPreviewController under iOS 6.</p>
  
  <p>I'm wondering if they are using some new OpenGL ES to render the file preview so that it could not capture?  In theory, this piece of code should be able to capture anything on screen right??</p>
  
  <p>From <a href="http://developer.apple.com/library/ios/#qa/qa1703/_index.html" rel="nofollow">http://developer.apple.com/library/ios/#qa/qa1703/_index.html</a></p>
  
  <pre><code>- (UIImage*)screenshot 
  {
  // Create a graphics context with the target size
  // On iOS 4 and later, use UIGraphicsBeginImageContextWithOptions to take the scale into consideration
  // On iOS prior to 4, fall back to use UIGraphicsBeginImageContext
  CGSize imageSize = [[UIScreen mainScreen] bounds].size;
  if (NULL != UIGraphicsBeginImageContextWithOptions)
      UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0);
  else
      UIGraphicsBeginImageContext(imageSize);
  
  CGContextRef context = UIGraphicsGetCurrentContext();
  
  // Iterate over every window from back to front
  for (UIWindow *window in [[UIApplication sharedApplication] windows]) 
  {
      if (![window respondsToSelector:@selector(screen)] || [window screen] == [UIScreen mainScreen])
      {
          // -renderInContext: renders in the coordinate space of the layer,
          // so we must first apply the layer's geometry to the graphics context
          CGContextSaveGState(context);
          // Center the context around the window's anchor point
          CGContextTranslateCTM(context, [window center].x, [window center].y);
          // Apply the window's transform about the anchor point
          CGContextConcatCTM(context, [window transform]);
          // Offset by the portion of the bounds left of and above the anchor point
          CGContextTranslateCTM(context,
                                -[window bounds].size.width * [[window layer] anchorPoint].x,
                                -[window bounds].size.height * [[window layer] anchorPoint].y);
  
          // Render the layer hierarchy to the current context
          [[window layer] renderInContext:context];
  
          // Restore the context
          CGContextRestoreGState(context);
      }
  }
  
  // Retrieve the screenshot image
  UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
  
  UIGraphicsEndImageContext();
  
  return image;
  }
  </code></pre>