tableView的Header下拉放大

下拉放大

在项目中我们有时候想实现tableView的Header下拉放大的效果,自己没有能力就经常用到第三方,很是麻烦,今天总结了两种自己用很少代码就能实现这种效果的方法,一起来看一下吧

首先设置表视图的头视图,并遵守<UIScrollViewDelegate>代理协议

    //要缩放的头部图片
    self.imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"photo"]];
    // 设置tableView头部视图,必须设置头部视图背景颜色为clearColor,否则会被挡住
    self.imageView.frame = CGRectMake(0, 0, self.view.frame.size.width, 200);
    [self.tableView insertSubview:self.imageView atIndex:0];
    //插入头部视图
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 200)];
    headerView.backgroundColor = [UIColor clearColor];
    self.tableView.tableHeaderView = headerView;

方法一、拿到scrollview的偏移量计算下拉imageview的frame,使其imageview的宽高增大。上拉的时候恢复原来的frame

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    // 获取当前偏移量
    CGFloat offsetY = scrollView.contentOffset.y;
    if (offsetY < 0) {
        self.imageView.frame = CGRectMake(offsetY, offsetY, scrollView.bounds.size.width - offsetY * 2, 200 - offsetY);
    } else {
        self.imageView.frame = CGRectMake(0, 0, scrollView.bounds.size.width, 200);
    }
}

方法二、再向上拉的过程中要保证imageview不会进行缩放,只是改变下imageview的y轴的值

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
    CGFloat offsetY = scrollView.contentOffset.y + scrollView.contentInset.top;
    CGFloat scale = 1.0;
    if (offsetY < 0) {
        //向下拉
        scale = MIN(2.5, 1 - offsetY / 200);
        //运用CGAffineTransformMakeScale使imageview缩放
        self.imageView.transform = CGAffineTransformMakeScale(scale, scale);
        CGRect frame = self.imageView.frame;
        frame.origin.y = offsetY;
        self.imageView.frame = frame;
    }else if(offsetY > 0){
        //向上拉
        CGRect frame = self.imageView.frame;
        frame.origin.y = -offsetY/200;
        self.imageView.frame = frame;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,204评论 4 61
  • d326f260425a阅读 921评论 0 1
  • 文/木易每文 认识郑小北的时候,我们都还穿着开裆裤,一起玩着泥巴,互相把对方弄得人不像人鬼不像鬼,然后各自回家,等...
    木易每文阅读 4,453评论 14 10
  • 第一次看见这本书的时候就想翻开看看,就这样,它成了老刘送我的第一份礼物,传递着他小心思的信物。 近来,一个人在家带...
    Ellen的小小世界阅读 3,372评论 0 50
  • 人活着,不应该折腾。 踏踏实实的,平平顺顺的,过好一辈子的日子。 人活着,就应该折腾。 全力以赴的,永不言弃的,做...
    li3wei阅读 2,490评论 0 1