Very similar to this question (and also this answer), I\'m trying to make an UIImage out from a webview. So far I\'m using the code suggested in the answer, specifically: <
D R's answer is fine. The only thing missing is taking into account the scale of screen. I have it corrected in my Swift version and it works fine for me.
extension UIWebView{
func snapshotForCompletePage() -> UIImage {
// tempframe to reset view size after image was created
let tmpFrame: CGRect = self.frame
// set full size Frame
var fullSizeFrame: CGRect = self.frame
fullSizeFrame.size.height = self.scrollView.contentSize.height
self.frame = fullSizeFrame
// here the image magic begins
UIGraphicsBeginImageContextWithOptions(fullSizeFrame.size, false, UIScreen.mainScreen().scale)
let resizedContext: CGContextRef = UIGraphicsGetCurrentContext()!
self.layer.renderInContext(resizedContext)
let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
// reset Frame of view to origin
self.frame = tmpFrame
return image
}
}