美文网首页iOS备忘录知识点程序员
WebView添加头视图并下拉放大

WebView添加头视图并下拉放大

作者: _南山忆 | 来源:发表于2016-05-05 16:33 被阅读732次

    我们在很多软件中都看到过,头部视图为一张图片,下拉的时候图片放大,效果挺棒的。在一般的应用中都是TableView中实现这种效果。
      tableView中实现相对简单一些,也与webView中相似,在此我只提供一个TableView实现这种效果的思路,就不写实现代码了。具体可以参考下面webView中的实现
      1、给tableView添加头视图,设置头视图为透明色
      2、把ImageView加在self.view上(注意加在tableView下面)
      3、设置tableVIew的backgroundcolor为透明色
      4、根据tableView的offset改变imageView的frame即可

    1、分析一下webView的视图结构

    webView是一个复合视图,里面包含有一个scrollView,scrollView里面是一个UIWebBrowserView(负责显示WebView的内容)如下图所示:

    屏幕快照 2016-05-05 下午3.44.06.png

    2、添加headImageView到webView

    不可以把headImageView放在scrollView里面,这样就会把headImageView一同往下移动,造成上面空白

    UIView *webBrowserView = self.webView.scrollView.subviews[0];//拿到webView的webBrowserView
        self.backHeadImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenWidth*2/3.0)];
        [_backHeadImageView sd_setImageWithURL:[NSURL URLWithString:self.imageUrl] placeholderImage:[UIImage imageNamed:@"placeholderImage"]];
        [self.webView insertSubview:_backHeadImageView belowSubview:self.webView.scrollView];
        //把backHeadImageView插入到webView的scrollView下面
        CGRect frame = self.webBrowserView.frame;
        frame.origin.y = CGRectGetMaxY(_backHeadImageView.frame);
        self.webBrowserView.frame = frame;
        //更改webBrowserView的frame向下移backHeadImageView的高度,使其可见
    

    3、下拉时改变headImageView的frame产生放大效果

    - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
        CGPoint offSet = scrollView.contentOffset;
        CGFloat change = offSet.y;
        //拿到scrollView的偏移量
        if (offSet.y < 0) {
        //偏移量小于0,即下拉就改变headImageView的frame
            CGSize size = CGSizeMake(kScreenWidth-change, kScreenWidth*2/3.f-change);
            self.backHeadImageView.frame = CGRectMake(0, 0, size.width , size.height);
            self.backHeadImageView.center = CGPointMake(kScreenWidth/2.f, size.height/2.f);
        }else{
        //上滑时改变位置
            self.backHeadImageView.center = CGPointMake(kScreenWidth/2.f, (kScreenWidth*2/3.f)/2.f-change);
        }
    }
    

    下面是最终效果


    Untitled.gif

    相关文章

      网友评论

      本文标题:WebView添加头视图并下拉放大

      本文链接:https://www.haomeiwen.com/subject/nuydrttx.html