ios客戶端學習-WKWebView中圖片適應螢幕並獲取WKWebView高度
WKWebView中圖片適應螢幕並獲取WKWebView高度
//
//初始化
-
(void)initwebView:(CGRect)frame {
if (!self.webView) {
self.webView = [[WKWebView alloc] init];
//以下程式碼適配大小
NSString *jScript = @“var meta = document.createElement(‘meta’); meta.setAttribute(‘name’, ‘viewport’); meta.setAttribute(‘content’, ‘width=device-width’); document.getElementsByTagName(‘head’)[0].appendChild(meta);”;WKUserScript *wkUScript = [[WKUserScript alloc] initWithSource:jScript injectionTime:WKUserScriptInjectionTimeAtDocumentEnd forMainFrameOnly:YES]; WKUserContentController *wkUController = [[WKUserContentController alloc] init]; [wkUController addUserScript:wkUScript]; WKWebViewConfiguration *wkWebConfig = [[WKWebViewConfiguration alloc] init]; wkWebConfig.userContentController = wkUController; self.webView = [[WKWebView alloc] initWithFrame:frame configuration:wkWebConfig]; [self addSubview:self.webView]; _webView.navigationDelegate = self;
}
}
#pragma mark - WKNavigationDelegate
// 將html中圖片適應螢幕
-
(void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation {
NSString *[email protected]“var script = document.createElement(‘script’);”
“script.type = ‘text/javascript’;”
"script.text = “function ResizeImages() { "
“var maxwidth = %f;”
“for(i=0;i <document.images.length;i++){”
“myimg = document.images[i];”
“if(myimg.width > maxwidth){”
“oldwidth = myimg.width;”
“myimg.width = %f;”
“}”
“}”
“}”;”
“document.getElementsByTagName(‘head’)[0].appendChild(script);”;
js=[NSString stringWithFormat:js,[UIScreen mainScreen].bounds.size.width,[UIScreen mainScreen].bounds.size.width-15];
[self.webView evaluateJavaScript:js completionHandler:nil];
[self.webView evaluateJavaScript:@“ResizeImages();” completionHandler:nil];__block CGFloat webViewHeight;
[self.webView evaluateJavaScript:@“document.body.offsetHeight” completionHandler:^(id _Nullable result,NSError * _Nullable error) {
//獲取頁面高度,並重置webview的frame
webViewHeight = [result doubleValue];
webView.height = webViewHeight;
[self regetwebviewheight:webViewHeight];
NSLog(@"%f",webViewHeight);
}];NSLog(@“結束載入”);
}
// 獲取頁面優化後實際高度
-(void)regetwebviewheight:(CGFloat)webViewHeight{
[self.webView setFrame:CGRectMake(0, 0, SCREEN_WIDTH, webViewHeight)];
[self.webView evaluateJavaScript:@“document.body.offsetHeight” completionHandler:^(id _Nullable result,NSError * _Nullable error) {
//獲取頁面高度
CGFloat height = [result doubleValue];
NSLog(@“頁面高度height”);
}];
}