Swift

웹뷰 전체 내역 캡쳐 및 앨범 저장

반다이크 2023. 1. 17. 16:47
반응형

웹뷰 extension

extension WKWebview {
	func createImage(webView: WKWebView, completion: @escaping (UIImage?) -> ()) {
    	let originalFrame = webView.frame
        let originalConstraints = webView.constraints
        let originalScrollViewOffset = webView.scrollView.contentOffset
        
        let newSize = webView.scrollView.contentSize
        
        webView.removeConstraints(originalConstraints)
        webView.translatesAutoresizingMaskIntroConstraints = true
        webView.frame = CGRect(origin: .zero, size: newSize)
        webView.scrollView.contentOffset = .zero
        
        DispatchQueue.main.asyncAfter(deadline: .now() + 4.0) {
        	defer {
            	UIGraphicsEndImageContext()
                }
            UIGraphicsBeginImageContextWithOptions(newSize, false, 0)
            if let context = UIGraphicsGetCurrentContext() {
            	webView.scrollView.layer.render(in: context)
                
                webView.frame = originalFrame
                webView.translatesAutoresizingMaskIntroConstraints = false
                webView.addConstraints(originalConstraints)
                webView.scrollView.contentOffset = originalScrollViewOffset
                
                if let image = UIGraphicsGetImageFromCurrentImageContext() {
                	completion(image)
                } else {
                	completion(nil)
                }
            }
        }
    }
}

 

함수 호출 및 앨범 저장

self.webView.createImage(webView: webView) { image in
	if let img = image {
    	UIImageWriteToSavedPhotoAlbum(img, self, nil, nil)
    }
}
반응형

'Swift' 카테고리의 다른 글

WKWebView의 UIDelegate completion crash 해결  (0) 2023.03.17
notRunnging 상태에서 링크 및 푸시에서 접근시  (0) 2023.01.17
Alamofire Swift  (0) 2022.07.15
RxSwift + Alamofire  (0) 2022.07.14
iOS ScrollView 설정  (0) 2022.06.05