UITableView下拉放大顶部图片的实现方法

想着把这个方法自己整理整理步骤,以便老年痴呆的时候可以回顾~

1、首先进行基础准备工作

    self.tableView.delegate = self;
    self.tableView.dataSource = self;
    self.contentArray = @[@"JJ",@"KK",@"LL",@"AA",@"JJ",@"KK",@"LL",@"AA",@"JJ",@"KK",@"LL",@"AA"];
    [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
    self.automaticallyAdjustsScrollViewInsets = NO;

2、让UITableView的内边距中,向下偏移200,留出200的空间给TableView上方的ImageView

    self.tableView.contentInset = UIEdgeInsetsMake(200, 0, 0, 0);

3、创建一个ImageView,我们让它Y轴的位置在-200处,高度也设置为200,记得contentMode设置为UIViewContentModeScaleAspectFill,因为只有这样,才能让ImageView在缩放的时候,里面的图片也跟着一起缩放。然后把ImageView添加到TableView上面。

    UIImageView* imageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, -200, self.view.frame.size.width, 200)];
    imageView.image = [UIImage imageNamed:@"image4"];
    imageView.contentMode = UIViewContentModeScaleAspectFill;
    imageView.tag = 10001;
    imageView.layer.masksToBounds = YES;
    [self.tableView addSubview:imageView];

4、这里就是重头戏了,每当tableView继承的scrollView滚动的,偏移量超过初始的-200,就会开始计算新的ImageViewframe,实时改变,这样,UIViewContentModeScaleAspectFill就派上用场了,可以把图片一起缩放。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGPoint offsetPoint = scrollView.contentOffset;
    if (offsetPoint.y < -200) {
        //获取上次滚动生成的frame
        CGRect frame = [self.tableView viewWithTag:10001].frame;
        //把偏移的y值赋值给frame的y值,使其可以继续保持在原点
        frame.origin.y = offsetPoint.y;
        //把偏移的y值赋值给frame的高,使其可以贴着tableView
        frame.size.height = -offsetPoint.y;
        [self.tableView viewWithTag:10001].frame = frame;
    }
}

你可能感兴趣的:(UITableView下拉放大顶部图片的实现方法)