2

我已经搜索了互联网来回答这个问题,但还没有找到答案。

我正在编写一个使用 QLPrieviewController 显示文档的应用程序。我想把屏幕复制到外部显示器上。我让它适用于 ios5,代码如下。此代码不再适用于 ios6。

    UIGraphicsBeginImageContextWithOptions(self.previewController.view.frame.size, NO, 0.0);
    [self.previewController.view.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * clonedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    [mirrorWebPageView setImage: clonedImage];

我尝试使用渲染前窗来查看使用以下代码会得到什么。

    NSArray * currentwindows = [[UIApplication sharedApplication] windows]; 
    UIWindow *trythisone = [currentwindows objectAtIndex:0];
    UIGraphicsBeginImageContextWithOptions(trythisone.frame.size, NO, 0.0);
    [trythisone.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage * clonedImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    [mirrorWebPageView setImage: clonedImage];

我显示了导航栏和底部工具栏,但视图中未显示 QLPreviewController 的内容。

我已阅读 RenderIncontext 存在一些问题,但无法确定这是否是我的问题。

有关如何解决此问题的任何想法都会有所帮助。

谢谢

4

2 回答 2

0

我尝试在 iOS6 上以编程方式进行屏幕捕获,它只会捕获背景视图。在 iOS5 上它可以工作。它可能是一种安全功能,可以防止程序捕获您正在查看的内容并将其发送到某个地方。

于 2012-12-06T17:34:00.937 回答
0

这是不可能的,因为在最新版本的 iOS 上,您的进程不再显示预览的文档。预览机制由另一个进程处理。

于 2015-01-30T09:42:08.060 回答