zoukankan      html  css  js  c++  java
  • 在tableview的headerView中添加webView,webView自适应高度

    最近在项目中需要添加一个webView加载的页面,下面显示的是对这个webView所显示的内容的一个评论列表 ,列表要根据后台加载过来的HTML自适应的变化高度,tableview的cell在webView的下面显示,显示的效果

    1.设置webView ,初始的高度设置为0.5 ,设置为tableHeaderView为webView,添加了一个观察者,监控webView 的contentSize的变化

        _myWebView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, 0.5)];
        _myWebView.delegate = self;
        _myWebView.scrollView.scrollEnabled = NO;
        _myWebView.scrollView.showsHorizontalScrollIndicator = NO;
        [_myWebView sizeToFit];
        _myWebView.scrollView.bounces = NO;
        [self.myWebView.scrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil];
        _myTableView.tableHeaderView = _myWebView;
    

    2.在observer中的方法,通过获取到整个webView的内容,修改他的frame

    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
    {
        if ([keyPath isEqualToString:@"contentSize"]) {
            webViewH = [[self.myWebView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue]+15;
            CGRect newFrame = self.myWebView.frame;
            newFrame.size.height = webViewH;
            NSLog(@"现在的高度===%f",webViewH);
            self.myWebView.frame = newFrame;
            self.myTableView.tableHeaderView = self.myWebView;
        }
    }
    

    3.最后也别忘记释放观察者

    -(void)dealloc{
        [self.myWebView.scrollView removeObserver:self forKeyPath:@"contentSize"];
    }
    

      

      

      

  • 相关阅读:
    vscode安装插件时报错
    css-flex整理
    java学习之路--String类的基本方法
    java学习之路--面试之并发基础
    java学习之路--面试之多线程基础
    java学习之路--多线程实现的方法
    java学习之路--简单基础的面试题
    java学习之路
    jquery中remove()和empty()是区别
    创建html新元素的三种方法
  • 原文地址:https://www.cnblogs.com/zj901203/p/6274362.html
Copyright © 2011-2022 走看看