表的头视图下拉放大效果

Posted pengyuan_D

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表的头视图下拉放大效果相关的知识,希望对你有一定的参考价值。

ViewController.h

@interface ViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>

    UIImageView *_imageView;

ViewController.m

<p>#import "ViewController.h"</p>
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

    [super viewDidLoad];

    //创建表视图
    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 480) style:UITableViewStylePlain];
    tableView.backgroundColor = [UIColor clearColor];
    tableView.delegate = self;
    tableView.dataSource = self;
    [self.view addSubview:tableView];
    
    //创建视图
    _imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 150)];
    _imageView.image = [UIImage imageNamed:@"image1.jpg"];
    [self.view insertSubview:_imageView belowSubview:tableView];
    
    UIView *headView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 150)];
    headView.backgroundColor = [UIColor clearColor];
    tableView.tableHeaderView = headView;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 

    return 40;
    


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
    
    static NSString *iden = @"cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:iden];
    
    if (cell == nil) 
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:iden];
    

    cell.textLabel.text = [NSString stringWithFormat:@"第%d行",indexPath.row];
    
    return cell;


- (void)scrollViewDidScroll:(UIScrollView *)scrollView 

    //获取到视图Y方向的偏移量
    CGFloat offsetY = scrollView.contentOffset.y;
    CGRect frame = _imageView.frame;
    //向上滑动
    if (offsetY > 0) 
        frame.origin.y = - offsetY;
        _imageView.frame = frame;
    else 
        //向下滑动
        
        //1.获取拉伸后图片的高度
        CGFloat height = 150 + ABS(offsetY);
        
        //图片原来的高度/图片原来的宽度 = 图片放大后的高度/图片放大后的宽度
        //150/320 = height/x
        //2.获取图片放大后的宽度
        CGFloat width = 320 *height/150;
        
        //3.修改imageView的frame
        _imageView.frame = CGRectMake(-(width-320)/2, -(height-150)/2, width, height);
        
    
    


@end


以上是关于表的头视图下拉放大效果的主要内容,如果未能解决你的问题,请参考以下文章

iOS之下拉放大,上推缩小,一个方法搞定

Android自定义View之上拉下拉列表 头部元素跟随 缩放平移效果的实现

iOS tableView下拉图片放大

iOS下拉图片放大

Swift-UITableView头部下拉放大

mapkit 地图视图幻灯片滑动到并放大效果?