ios - 如何在ios9中捕获 View 的完整屏幕截图

标签 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中如何截屏

最佳答案

解决方案 1:

API自 iOS 7 以来已添加,这应该提供获取快照的有效方法

snapshotViewAfterScreenUpdates:将 View 渲染为内容不可修改的 UIView

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

  drawViewHierarchyInRect:afterScreenUpdates:

:如果您还需要绘制所有 subview (如标签、按钮...),则同样的事情

您可以使用为任何 UI 效果返回的 UIView,或者在需要导出时将其渲染到图像中,就像您所做的那样。

解决方案 2:

- (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;
}

关于ios - 如何在ios9中捕获 View 的完整屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34715561/

相关文章:

testing - 有没有办法让 'select' 选项打开截图?

ios - 如何在 ios 中使用 Web 服务获取声音数据?

ios - Core Data 中多对多关系的 sectionNameKeyPath 值

ios - Sprite kit Sprite 加载性能改进

ios - UIDocumentInreactionController 不允许 .URL 的 NSURL (Swift)

javascript - 运行javascript后如何截取网页截图

Java,启动低于面板的屏幕捕获

ios - 如何使用 ios 图表在条形图中点击条形图时在条形图上显示值?

ios - swift 2 Core Data Predicate 数组中不区分大小写的搜索集

javascript - 如何使用 HTML/JavaScript 捕获客户端 "desktop"部分的屏幕截图?