获取高度值的方法:
- (void)webViewDidFinishLoad:(UIWebView *)webView { // 获取webView的高度 CGFloat webViewHeight = [[self.myWebView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue]; CGFloat webViewHeight = [[self.myWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue]; CGFloat webViewHeight = [[self.myWebView stringByEvaluatingJavaScriptFromString:@"document.body.clientHeight"] floatValue]; }
遇到的问题:在这里采用的是加载HTML代码,由于前端H5中格式问题,网页中图片过大,显示不完整,于是自己做了以下处理,使图片适配屏幕大小
- (void)webViewDidFinishLoad:(UIWebView *)webView { // 1、只对本地html资源的图片有效果 NSString *js = @"function imgAutoFit() { var imgs = document.getElementsByTagName('img'); for (var i = 0; i < imgs.length; ++i) { var img = imgs[i]; img.style.maxWidth = %f; } }"; js = [NSString stringWithFormat:js, [UIScreen mainScreen].bounds.size.width - 20]; [self.myWebView stringByEvaluatingJavaScriptFromString:js]; [self.myWebView stringByEvaluatingJavaScriptFromString:@"imgAutoFit()"]; // 获取webView的高度 CGFloat webViewHeight = [[self.myWebView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue]; NSLog(@"%.f", webViewHeight); }
但是这样做的话,获取的网页高度还是以前一样的内容高度,但图片改变了大小,导致网页下方留出了多余的空白。
于是再次进行了修改,将获取到的HTML代码拼接一个格式后,再来请求HTML网页,
/*- 在加载网页时添加代码 -*/ // 手动改变图片适配问题,拼接html代码后,再加载html代码 NSString *myStr = [NSString stringWithFormat:@"<head><style>img{max- %f !important;}</style></head>", [UIScreen mainScreen].bounds.size.width - 20]; NSString *str = [NSString stringWithFormat:@"%@%@",myStr, html5代码]; [self.myWebView loadHTMLString:str baseURL:nil]; /*- 在加载网页时添加代码 -*/ - (void)webViewDidFinishLoad:(UIWebView *)webView { // 获取webView的高度 CGFloat webViewHeight = [[self.myWebView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"] floatValue]; NSLog(@"%.f",webViewHeight); }
这样就完美适配屏幕大小了!