Как захватить всю HTML-страницу (включая переполнение) в UIWebView?

Код ниже захватывает экран, но не всю страницу веб-представления:

func screenShotMethod() {
    //Create the UIImage
    UIGraphicsBeginImageContext(view.frame.size)
    view.layer.renderInContext(UIGraphicsGetCurrentContext())
    let image = UIGraphicsGetImageFromCurrentImageContext()
    UIGraphicsEndImageContext()

    //Save it to the camera roll
    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
}

Как захватить всю HTML-страницу (включая переполнение) в UIWebView?


person Dave Leewood    schedule 01.03.2015    source источник
comment
Увеличьте высоту как для веб-просмотра, так и для контекста.   -  person Arbitur    schedule 01.03.2015
comment
Я новичок в этом. Пожалуйста, будьте более конкретными.   -  person Dave Leewood    schedule 01.03.2015


Ответы (1)


Я знаю, что уже поздно, но это может помочь кому-то еще:

let webViewFrame = uiWebViewObj.frame
let scrollViewOffset = uiWebViewObj.scrollView.contentOffset
if webView.scrollView.contentSize.width == 0 || webView.scrollView.contentSize.height == 0{
  // nothing to take screenshot of 
}
//Set the scrollView offset to top of the web Page
uiWebViewObj.scrollView.setContentOffset(CGPointMake(0, -webView.scrollView.contentInset.top), animated: false)
let screenRect =  UIScreen.mainScreen().bounds
uiWebViewObj.frame = CGRectMake(webViewFrame.origin.x, webViewFrame.origin.y, screenRect.size.width, uiWebViewObj.scrollView.contentSize.height)
 let cgSizeToUse = CGSizeMake(screenRect.size.width, uiWebViewObj.scrollView.contentSize.height)
autoreleasepool{
    UIGraphicsBeginImageContextWithOptions(cgSizeToUse, false, 0) 
    uiWebViewObj.layer.renderInContext(UIGraphicsGetCurrentContext())
    let image = UIGraphicsGetImageFromCurrentContext()
    UIGraphicsEndImageContext()
}

uiWebViewObj.frame = webViewFrame
uiWebObj.scrollView.contentOffset = scrollViewOffset

Ссылка: http://swiftgazelle.com/2015/08/how-to-take-uiwebview-screenshot-in-swift-on-ios/

person Goon Nguyen    schedule 27.09.2016