博客> webview高度自适应
webview高度自适应
1小时前 评论:1 阅读:984 YanaZhang
ios webview 自适应高度
   最近在开发社区,包括用户发帖功能,在展示帖子详情的时候遇见了一些问题,主要的需求是上边加载帖子详情,下面加载用户回评,就像网易新闻那样;刚开始看到这个需求的时候,感觉很easy,webview加载网页信息,tableview加载回评信息,webview设置成tableview的header,在- (void)webViewDidFinishLoad:(UIWebView *)webView方法中获取webview的高度。但是实际运行效果不理想,而且漏洞百出;
   首先在- (void)webViewDidFinishLoad:(UIWebView *)webView获取到的高度跟实际高度有很大的偏差,尤其是在网络图片没有占位的情况下,高度会随着图片的加载继续发生变化;其次是在加载完成的代理里面设置header,会使得加载时间显得很长,给用户的体验很不好;再次是直接修改webview的高度当帖子内容很多时会内存溢出;从来没有想过一个看似简单的页面会有这么多问题,只能挨个解决;
    针对高度不准确的问题,自己监听webview的contentSize,随时根据webview的实际内容,更新高度,而且在开始加载的时候就展示给用户,随着内容的加载逐渐展示更多的内容,但是当webview的高度手动设置到50000的时候就会瞬间崩溃,所以相当于完全否定了之前的想法,只能重新做加载方案;开始怀疑苹果原声控件的性能,想其他的加载方法,最终都只是证明了自己的才疏学浅,webview本来就有重用的机制。
    看来只能通过监听tableview的contentOffset入手,方案还是tableview+ webview,只是header设置成view(headerView),并且webview作为子控件加载到headerView上,headerView的高度设置为监听到webview的contentSize的高度,滚动tableview的同时设置webview在headerView上的起始位置和contentOffset,给人一种webview的frame高度和headerView的高度等高的假象,此时问题才算圆满解决~
收藏
0
sina weixin mail 回到顶部