美文网首页
UITableview下拉图片放大效果

UITableview下拉图片放大效果

作者: _小地鼠 | 来源:发表于2017-05-11 12:08 被阅读72次

首先要设置self.view的frame的y坐标从0开始
如果设置成 self.edgesForExtendedLayout = UIRectEdgeBottom;那么就会self.view.frame是从navigationBar下面开始计算一直到屏幕底部;
如果设置成 self.edgesForExtendedLayout = UIRectEdgeNone;那么就会self.view.frame是从navigationBar下面开始计算一直到屏幕tabBar上部;
如果设置成 self.edgesForExtendedLayout = UIRectEdgeTop;那么就会self.view.frame是从navigationBar上面计算面开始计算一直到屏幕tabBar上部;

//创建tableview
- (void)initTableView{
    _tableview = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, kWidth, kHeight) style:UITableViewStylePlain];
    _tableview.delegate = self;
    _tableview.dataSource = self;
    [self.view addSubview:_tableview];
    
    self.headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kWidth, imgHeight)];
    UIImage *image = [UIImage imageNamed:@"app"];
    self.imageView = [[UIImageView alloc]initWithFrame:self.headerView.frame];
    self.imageView.image = image;
    //等比例拉伸以适应图层的边界
    self.imageView.contentMode = UIViewContentModeScaleAspectFit;
    //设置图片不让超出边界
    self.imageView.clipsToBounds = YES;
    [self.headerView addSubview:self.imageView];
    _tableview.tableHeaderView = self.headerView;
}

然后就是在scrollview的代理协议里面算一下等比例缩放

#pragma mark scrollViewDlegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    //获取tableview的偏移量
    CGFloat offset_y = scrollView.contentOffset.y;
    NSLog(@"%f",offset_y);
    if (offset_y < 0) {
        //拉伸后图片高度
        CGFloat height = imgHeight - offset_y;
        //放大的比例
        CGFloat scale = height/imgHeight;
        //设置拉伸后图片的frame
        self.imageView.frame = CGRectMake(-(kWidth*scale-kWidth)/2, offset_y, kWidth*scale, height);
    }
下拉放大效果.gif

相关文章

网友评论

      本文标题:UITableview下拉图片放大效果

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