iOS webview尾部加自定义view,并且有个黑条

本文介绍了如何在iOS的WebView底部添加自定义视图,并且解决因添加视图导致的黑条问题。提供了两种实现方法:一是直接将视图添加到webView上并调整contentInset;二是通过webViewDidFinishLoad方法获取contentSize设置frame。同时指出第二种方法可能导致的问题,并给出了解决黑条问题的技巧,即设置webView的opaque为NO,backgroundColor为clearColor。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接:http://blog.youkuaiyun.com/wqs1028/article/details/51273981


在 webView 上添加视图,页面需要和webView一起上下滑动,所以实现方法大概有两种

(一)把需要添加的视图添加到webView上

    // 添加额外的滚动附近区域的内容]

    CGFloat topImgHeight = 250 * RectScale;

    _webView.scrollView.contentInset = UIEdgeInsetsMake(topImgHeight, 000);//上,左,下,右 改变webView上的H5页面的展示位置向下挪


    UIView *coverView = [[UIView alloc]initWithFrame:CGRectZero];

    coverView.frame = CGRectMake(0, -(topImgHeight), kDeviceWidth, topImgHeight);//注意添加视图时的坐标

    [_webView.scrollView addSubview:coverView];//添加自己的视图到_webView.scrollView

(二)WebView加载完成获取webview中scrovllview的contentsize进行设置

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

CGFloatwebViewHeight=[webView.scrollViewcontentSize].height;

     CGRectnewFrame=webView.frame;

     newFrame.size.height=webViewHeight;

     webView.frame=newFrame;

 }

备注:第二种方法弊端是必须每次重新创建webView,不然会调用上次的webView高度



然而调整后右边出现了莫名的黑条,经过尝试我的解决方法是:

        _contentWebView.opaque = NO;

        _contentWebView.backgroundColor = [UIColor clearColor];

加上这两句代码可以解决问题。






额外附带自己的代码

   
    UIWebView *boomWebView = [[UIWebView alloc]init];
    
#warning 此处需要先这是内置偏移再设置frame否则会发生切换时出现底部黑边
    boomWebView.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 85, 0);
    boomWebView.frame=CGRectMake(0, 0, MSWIDTH, MSHIGHT-64);
    boomWebView.opaque = NO;
    boomWebView.backgroundColor=[UIColor whiteColor];

    NSURL *url = [[NSBundle mainBundle] URLForResource:@"bank" withExtension:@"html"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [boomWebView loadRequest:request];
    boomWebView.delegate = self;
    [self.view addSubview:boomWebView];
    self.webview=boomWebView;
    
    BoomShowView *boomshowView = [[BoomShowView alloc]initWithFrame:CGRectMake(0, boomWebView.bottom, MSWIDTH, 85)];
    boomshowView.backgroundColor=[UIColor whiteColor];
    [boomWebView.scrollView addSubview:boomshowView];
    self.boomshowView=boomshowView;



代理方法中添加监控:

-(void)webViewDidFinishLoad:(UIWebView *)webView{
    CGFloat he=webView.scrollView.contentSize.height;
    self.boomshowView.frame=CGRectMake(0, he, MSWIDTH, 84);
}



不足之处,多多指教!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值