如何在ios9中捕获视图的完整屏幕截图

时间:2016-01-11 06:42:07

标签: ios screenshot

捕捉截图的

使用以下代码

CGSize screenSize = [[UIScreen mainScreen] bounds].size;
UIGraphicsBeginImageContextWithOptions(screenSize, view.opaque, 0.0);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];

UIImage * img = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

但是它给出了错误>> :CGImageCreateWithImageProvider:无效的图像提供程序:NULL。

我不明白它是什么。

请帮忙!! 如何在ios9中捕获屏幕截图

3 个答案:

答案 0 :(得分:4)

解决方案1:

自iOS 7以来添加了新的API,它应该提供有效的快照获取方式

resizableSnapshotViewFromRect:afterScreenUpdates:withCapInsets ::将视图呈现为具有不可修改内容的UIView

drawViewHierarchyInRect:afterScreenUpdates: 同样的事情,但有可调整大小的插图

- (UIImage *) screenshot {
    UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);

    [self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;
}

:同样的事情,如果你也需要绘制所有子视图(如标签,按钮......)

您可以使用为任何UI效果返回的UIView,或者渲染到您需要导出时的图像。

解决方案2:

L.DomEvent.addListener(listing[0], 'mouseover',     function(e) {
    // Do stuff to listing div
}

答案 1 :(得分:0)

UIGraphicsBeginImageContext(CGSizeMake(self.view.frame.size.width,self.view.frame.size.height));
CGContextRef context = UIGraphicsGetCurrentContext();
[myUIView.layer renderInContext:context];
UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

答案 2 :(得分:0)

请尝试以下功能,它完美地为我工作:

snapshotViewAfterScreenUpdates

此外,如果您想模仿截图动画,请参阅此链接,我已为其提供了代码 Imitating screenshot flash animation on iOS