(简单介绍)UITableViewHeaderView放大方法

作者: 师弟出马 | 来源:发表于2016-03-01 21:37 被阅读3957次

    IF(BOOL 学习= =FALSE)BOOL 落后=TRUE;不断的学习,我们才能不断的前进。 --- 五大大组合

    UITableView 顶部加入图片,通过拖拽 UITableView 来实现图片的放大。

    iOS动画之下拉放大,讲解的动画效果,在很多app中都能见到,就是下拉放大图片的效果。先看看效果图。 1. 默认情况下,图片正常显示(没有被拉大)。 2. 当往下拉动的时候,图片等比例放大

    正常
    //添加headerView方法
    
    - (void)setLayoutHeaderView {
        
        UIView *headView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 200)];
    
        self.headImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, 200)];
    
        self.headImageView.image = [UIImage imageNamed:@"123.jpg"];
        [headView addSubview:self.headImageView];
        self.tableView.tableHeaderView = headView;
        
    }
    
    

    固定的大小,向下拖动TableView后,顶部露出了背景图片。

    未实现

    对于不需要下拉刷新的页面,又不想分配太大的空间来显示顶部图片,则可以选择这种。想要看大图?只要下拉TableView即可。_

    设置一个 UIImageView 为 UITableView 的 tableHeaderView,设置 UITableView 的 UIScrollViewDelegate在 TableView 滚动时,动态改变 tableHeaderView 的状态。

    //
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
      
        CGFloat width = [UIScreen mainScreen].bounds.size.width;
        CGFloat yOffset = scrollView.contentOffset.y  ;
        
        if (yOffset < 0) {    
            CGFloat totalOffset = 200 + ABS(yOffset);
            CGFloat f = totalOffset / 200;
        
            _headImageView.frame = CGRectMake(- (width * f - width) / 2, yOffset, width * f, totalOffset);
            
            
        }
     
    }
    
    
    
    方法实现后的效果

    实现拖动列表时图片放大的效果方法
    在scrollViewDidScroll内获取当前滚动坐标的y值当坐标y小于宏定义图片高度时就进行放大;放大原理是改变UIImageView的y坐标和高度,同时由于设置了contentMode属性,图片高度改变会使得宽度跟着改变,达到放大效果。

    相关文章

      网友评论

      • Sanchain:赞一个
      • 0ef6911e6477:你好,请问楼主 有没有设置过 self.tableView.tableHeaderView = self.headImageView;这样的句子来替换self.tableView.tableHeaderView = headView;这一句来看看显示效果,我不太明白直接设置ima个View来作为 头视图会产生不同的效果,楼主有时间的能否帮忙解答一下,谢谢
      • FengxinLi:请问楼主你图片设置的那个模式,随高度变化会缩放UIViewContentModeScaleAspectFill?这个吗?
        FengxinLi:@师弟出马 感觉看到没效果呢?是图片的原因吗?
        师弟出马:@Fengxinliju 随着高度变化而放大效果也变好
        师弟出马:@Fengxinliju 会啊
      • 心跳节奏:请问,下拉时顶部会有多余的空白是什么情况
        师弟出马:@心跳节奏 :heart_eyes:
        心跳节奏:@心跳节奏 解决了,frame没设置正确。感谢分享。
      • 执着追求:谢谢楼主 写的很好 期待楼主更新
      • 大大大龙:赞一下👍
      • 我叫巴图图:那个layoutSubview是系统方法还是你自己定义的?
        师弟出马:@我叫巴图图 自己定义的添加headView方法

      本文标题:(简单介绍)UITableViewHeaderView放大方法

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