webView 添加头部与底部视图

2019-09-26:
iOS 13 之后由于 UIWebView 被废弃,本文已经不在适用。请看这篇文章 iOS 13 UIWebView 更改为 WKWebView

有时我们用 webView 展示 html 是需要自定义头部视图与底部视图,原生没有像 tableView 那样提供相应的方法。我们只能自己写了。

添加头部视图

设置 contentInset,而不是 contentSize。

_webView.scrollView.contentInset = UIEdgeInsetsMake(headerHeight, 0, 0, 0);

配置区头:

//设置header
UIView *headerView = [[UIView alloc]initWithFrame:CGRectMake(0, -headerHeight, kDeviceWidth, headerHeight)];
[_webView.scrollView addSubview:headerView];

添加头部视图不使用 contentSize 的原因:

设置 contentSize 的时机是在- (void)webViewDidFinishLoad:(UIWebView *)webView网页加载完成之后,此时 html 网页是和头部视图重叠在一起,需要 1s 左右时间更新视图,体验不好。而使用 contentInset 不会发生这种现象。

添加底部视图

在 webView 加载完成后,获取 UIWebBrowserView 的 size 并重新设置 webView 的 contentSize。

UIWebBrowserView 是负责展示 html 内容的。

- (void)webViewDidFinishLoad:(UIWebView *)webView{

    UIView *webBrowserView = self.webView.scrollView.subviews[0];
    CGSize contentSize = webBrowserView.frame.size;
    //footer
    UIView *footerView = [[UIView alloc]initWithFrame:CGRectMake(0, contentSize.height, kDeviceWidth, footerHeight)];
    self.webView.scrollView.contentSize = CGSizeMake(contentSize.width, contentSize.height + footerHeight);
    [self.webView.scrollView addSubview:footerView];
}

小结

  • 添加头部视图使用 contentInset。

  • 添加底部视图在 webView 加载完成后重新设置 contentSize。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,846评论 1 32
  • Demo源码地址:https://github.com/cnthinkcode/HSNatvieWebView 代...
    薛定喵的鹅阅读 19,784评论 92 192
  • UIWebView用于在App中嵌入网页内容,通常情况下是html格式的网页,也支持pdf, word等文档。 首...
    fankang阅读 6,273评论 0 1
  • 1、viewcontroller的一些方法的说明viewDidLoad,viewWillDisappear, vi...
    iLees阅读 2,778评论 0 1
  • 我时常都会觉得我的世界太小了,可是大的世界仿佛又离我太远了,就像天边的星星一样,很多次我去仰望它,可是收获的总是泪...
    苦笑嫣然阅读 1,092评论 1 1