将屏幕外WKWebView渲染到NSImage中

时间:2015-05-10 08:39:24

标签: macos cocoa wkwebview

我尝试使用

将屏幕外WKWebView渲染到图像中
  • func cacheDisplayInRect(rect: NSRect, toBitmapImageRep bitmapImageRep: NSBitmapImageRep)
  • func drawLayer(layer: CALayer, inContext ctx: CGContext)

没有成功。生成的图像始终为空(白色或透明)。有没有人设法在优胜美地上做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以使用drawViewHierarchyInRect执行此操作:其他方法似乎都不起作用,请按以下方式使用:

UIGraphicsBeginImageContextWithOptions(newRect.size, YES, 0);
BOOL ok = [view drawViewHierarchyInRect:newRect afterScreenUpdates:YES];
if (!ok) {
    NSLog(@"Problem with drawView...");
}
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

我在iOS中做同样的事情,但不幸的是这个方法很慢,也必须在主线程中运行,只有在afterScreenUpdates设置为yes时才有效。请参阅此答案:How can I take a snapshot of a UIView that isn't rendered?

如果网页的任何方面都需要重新绘制,我也无法告诉我们。