项目中需要实现截取网页当前屏幕转化为图片,测试时发现当展示的是PDF时,截取当前屏幕生成的图片只有背景色(灰色),内容没有被截取。其它网页截取正常。
请问各位大神有没有解决方法。
另外,还发现一个BUG,当前WKWebView展示的是PDF时,如果push到下一个画面,然后再返回后,PDF的内容消失,只有背景灰色。
截取屏幕代码:
extension WKWebView {
func takeSnapshot() -> UIImage? {
var currentScreenImage: UIImage? = nil
if #available(iOS 11.0, *) {
takeSnapshot(with: nil) { (image, _) in
currentScreenImage = image
}
} else {
currentScreenImage = asImage()
}
return currentScreenImage
}
}
extension UIView {
func asImage() -> UIImage? {
if #available(iOS 10.0, *) {
let renderer = UIGraphicsImageRenderer(bounds: bounds)
return renderer.image { rendererContext in
layer.render(in: rendererContext.cgContext)
}
} else {
UIGraphicsBeginImageContextWithOptions(bounds.size, false, UIScreen.main.scale)
guard let context = UIGraphicsGetCurrentContext() else { return nil }
layer.render(in: context)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
}