将具有多个子视图的视图截图为 wkwebview

Posted

技术标签:

【中文标题】将具有多个子视图的视图截图为 wkwebview【英文标题】:Taking screenshot of a view with multiple subviews as wkwebview 【发布时间】:2016-04-12 11:37:05 【问题描述】:

我在 ios 应用程序中有一个视图,其中添加了多个 wkwebview 作为子视图来呈现 html 内容。它显示了所有内容,但是当我尝试截屏时,它显示为空白,好像内容从未在 wkwebviews 中呈现。

我用来截图的代码:

 //view is parent view which contains wkwebviews as childviews
 func takeScreenShot(view: UIView) -> UIImage
    UIGraphicsBeginImageContext(view.bounds.size)
    view.layer.renderInContext(UIGraphicsGetCurrentContext()!)
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()
    return image


当我检查 UI Hierarchy 时,wkwebviews 的内容实际上超出了父视图的范围。有合适的截图方法吗?

【问题讨论】:

【参考方案1】:

你试过了吗:

UIGraphicsBeginImageContextWithOptions(view.bounds.size, YES, 0);
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES];
UIImage* uiImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

取自here

【讨论】:

我试过这些代码行。它冻结了 UI。

以上是关于将具有多个子视图的视图截图为 wkwebview的主要内容,如果未能解决你的问题,请参考以下文章

如何在不将其添加到子视图的情况下截取 uiview?

具有多个子视图问题的容器视图

创建具有多个对象/层的视图 [关闭]

具有多个视图的 UIViewcontroller

调用具有多个子视图层次结构的协议方法

我们可以将具有自动布局的 XIB 加载为以编程方式创建的没有自动布局的视图的子视图,并使用父视图调整子视图的大小吗?