반응형
웹뷰 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 |