我正在 try catch WKWebView的屏幕截图,但是我的方法无法正常工作,它返回纯色,就好像图层树为空,而它似乎可以在其他 View 上工作。

- (UIImage *)screenshot
{
    UIImage *screenshot;

    UIGraphicsBeginImageContext(self.frame.size);

    [self.layer renderInContext:UIGraphicsGetCurrentContext()];

    screenshot = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return screenshot;
}

最佳答案

这个Stackoverflow answer在iOS 8上使用WKWebView为我解决了该问题,其中[view snapshotViewAfterScreenUpdates:][view.layer renderInContext:]返回纯黑色或白色:

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

10-07 19:56