完美方案——iOS的WebView自适应内容高度

    /////////////////////////////初始化,self.view是父控件/////////////////////////////////
    _webView = [[UIWebView alloc] initWithFrame: CGRectMake(0, 0, self.view.frame.size.width, 0)];
    _webView.delegate = self;
    _webView.scrollView.bounces = NO;
    _webView.scrollView.showsHorizontalScrollIndicator = NO;
    _webView.scrollView.scrollEnabled = NO;
    [_webView sizeToFit];
    ///////////////////////////////设置内容,这里包装一层div,用来获取内容实际高度(像素),htmlcontent是html格式的字符串//////////////
    NSString * htmlcontent = [NSString stringWithFormat:@"<div id=\"webview_content_wrapper\">%@</div>", htmlcontent];
    [_webView loadHTMLString:htmlcontent baseURL:nil];
    ////////////////////////////////delegate的方法重载////////////////////////////////////////////
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    //获取页面高度(像素)
    NSString * clientheight_str = [webView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"];
    float clientheight = [clientheight_str floatValue];
    //设置到WebView上
    webView.frame = CGRectMake(0, 0, self.view.frame.size.width, clientheight);
    //获取WebView最佳尺寸(点)
    CGSize frame = [webView sizeThatFits:webView.frame.size];

    //获取内容实际高度(像素)
    NSString * height_str= [webView stringByEvaluatingJavaScriptFromString: @"document.getElementById(‘webview_content_wrapper‘).offsetHeight + parseInt(window.getComputedStyle(document.getElementsByTagName(‘body‘)[0]).getPropertyValue(‘margin-top‘))  + parseInt(window.getComputedStyle(document.getElementsByTagName(‘body‘)[0]).getPropertyValue(‘margin-bottom‘))"];
    float height = [height_str floatValue];
    //内容实际高度(像素)* 点和像素的比
    height = height * frame.height / clientheight;
    //再次设置WebView高度(点)
    webView.frame = CGRectMake(0, 0, self.view.frame.size.width, height);
}
时间: 2024-10-05 09:22:11

完美方案——iOS的WebView自适应内容高度的相关文章

UITableViewCell自适应内容高度

UITableViewCell自适应内容高度 (2015-06-25 16:02:31) 其实TableViewCell自适应高度也就是Cell中的label自适应高度,网上有好多label自适应高度的方法,可以百度. 除了上面说的,还有一种比较简单的,其实原理估计都是一样的,只是个人觉得这种更好些而已. 首先我们知道返回cell自适应高度,那么这个高度怎么来,肯定是TableViewDelegate的方法- (CGFloat)tableView:(UITableView *)tableView

jquery库实现iframe自适应内容高度和宽度

javascript原生和jquery库实现iframe自适应内容高度和宽度---推荐使用jQuery的代码! ‍<iframe src="index.php" id="mainiframe" name="mainiframe" width="100%"   frameborder="0" scrolling="no" marginwidth="0" margi

swift 如何获取webView的内容高度

应用中如果使用webView,要想获取其内容高度,就要实现其代理方法, 首先添加代理UIWebViewDelegate 然后给代理赋值 webView.delegate = self 实现代理方法: func webViewDidFinishLoad(webView: UIWebView) {...} 接下来就可以在这个方法里获取到webView的高度了 print(webView.scrollView.contentSize.height)

IOS ——UI篇—— 自适应UILable高度 或宽 的设置

我们在使用UILable时,在初始化的时候往往都是设置的固定的宽和高,在显示不同长度的文本时达不到我们想要的视觉效果,或者是不能显示完稍长的文本内容,满足不了我们的需求, 我们可以根据文本的长度自动调节lable的高 或 宽 //初始化时设置的size可以随便(此时的size会根据文本的多少自动调节) _titleLable = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, WIDTH, 100)]; _titleLable.textAlignme

iframe自适应内容高度

/***上传控件iframe自适应**/function iframeautoHeight(obj, frameObj) {    if (document.all) {        if (frameObj) {            obj.height = document.getElementById(frameObj).contentWindow.document.body.scrollHeight;            obj.width = document.getElemen

Swift设置Table View的Cell中Lable自适应内容高度的

@IBOutletweak var myTableView: UITableView! override func viewDidLoad() { super.viewDidLoad() myTableView.estimatedRowHeight = 44.0 myTableView.rowHeight =UITableViewAutomaticDimension } 最后修改在Table Cell中Label的lines属性,将其设置为0.

iOS: 计算 UIWebView 的内容高度

- (void)webViewDidFinishLoad:(UIWebView *)wb { //方法1 CGFloat documentWidth = [[wb stringByEvaluatingJavaScriptFromString:@"document.getElementById('content').offsetWidth"] floatValue]; CGFloat documentHeight = [[wb stringByEvaluatingJavaScriptFr

iOS 【终极方案】精准获取webView内容高度,自适应高度

前言:是这样的,刚写完上一篇文章还没缓过神来,上一篇文章我还提到了,想和大家聊聊原生+H5如何无缝连接的故事.结果我朋友就给我发了两篇他的作品.他的做法也都有独到之处.好的文章都是这样,让你每次看都能有新的收获,我们也都致力于写一些能帮别人解决问题的文章,下面我用另一种方式来完美实现这个问题.毕竟之前大家都是根据UIWebView写的,我来说说换成WK之后的区别,主题思路也不同哦~ 插两个链接,是我朋友的大家也可以做个对比 iOS [终极方案]精准获取webView内容高度,自适应高度 iOS

iOS【野路子】精准获取webView内容高度,自适应高度

关于WebView内容高度的获取,相信很多人都踩过坑,无法获取到准确高度,导致页面布局出现差错,搜到的资料很多但都无法解决问题,以下是个人经验总结: 项目需求实现H5文章&原生评论效果,文章是加载H5链接,评论信息是后台接口提供,以列表形式展示. 实现思路: 1. webView加载H5链接,设置它为tableView的 headerView,下方评论信息用Cell加载展示. 2. 在webView的回调方法webViewDidFinishLoad中获取网页内容高度,设置为webView的高度,