UITableView+UIHeadView上控件位置不动+UIImageView 下拉放大

1.要实现这个功能之前,我们先考虑一下,一个UIImageView 随着tableView 的下拉放大,我们的第一个想到的就是UIScrollerView的代理方法,由于UITableView继承UIScrollerView,因此tableView也具有UIScrollerView 的代理方法,因为UIIMageView 的放大是随着下拉UITableView 的变化而变化的,从中可读取contentOffset 属性已确定其滚动到的位置,常用如下方法:-(void)scrollViewDidScroll:(UIScrollView *)scrollView。

2.下面我们直接说说如何实现(含代码)

(1). 定义一个tableView的headView   

    UIView *headerView=[[UIView alloc] initWithFrame:CGRectMake(0,0,SCREEN_WIDTH,180)]; 

    headerView.userInteractionEnabled=YES;

(2.)定一个一个UIImageView *backgroundImg=[[UIImageView alloc] initWithFrame:CGRectMake(0,0,SCREEN_WIDTH,KPersonHeadHeight)]

   [backgroundImg setImage:[UIImage imageNamed:@"member_bg"];

   backgroundImg.userInteractionEnabled=YES;

(3) 定义一个UIView为personHeadView,这个控件的作用就是距离tableViewHeadView 的底部距离一直不变。然后将该控件加到backgroundImg上。

   [headerView addSubview:backgroundImg];

  最后把 headerView 赋值为tableViewHeadView。

(3).最为关键的代码在这里

/****************************************************核心代码***********************************/

-(void)scrollViewDidScroll:(UIScrollView *)scrollView

{

    CGFloat yOffset=scrollView.contentOffset.y;

    if(yOffset<0){

        CGFloat totalOffset=180+ABS(yOffset);

        backgroundImg.frame=CGRectMake(0,yOffset,SCREEN_WIDTH,totalOffset);

        personHeadView.frame=CGRectMake(0,totalOffset-180,SCREEN_WIDTH,180); 这个是tableViewHeadView 上的固定控件(距离tableViewHeadView底部距离一直不变)

    }else{

        CGFloat alpha=fabs(yOffset)/(180-64);

        self.navIV.backgroundColor=[UIColor colorWithRed:253.0/255.0f green:131.0/255.0f blue:147.0/255.0f alpha:alpha];

    }

}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值