首先要设置self.view的frame的y坐标从0开始
如果设置成 self.edgesForExtendedLayout = UIRectEdgeBottom;那么就会self.view.frame是从navigationBar下面开始计算一直到屏幕底部;
如果设置成 self.edgesForExtendedLayout = UIRectEdgeNone;那么就会self.view.frame是从navigationBar下面开始计算一直到屏幕tabBar上部;
如果设置成 self.edgesForExtendedLayout = UIRectEdgeTop;那么就会self.view.frame是从navigationBar上面计算面开始计算一直到屏幕tabBar上部;
//创建tableview
- (void)initTableView{
_tableview = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, kWidth, kHeight) style:UITableViewStylePlain];
_tableview.delegate = self;
_tableview.dataSource = self;
[self.view addSubview:_tableview];
self.headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, kWidth, imgHeight)];
UIImage *image = [UIImage imageNamed:@"app"];
self.imageView = [[UIImageView alloc]initWithFrame:self.headerView.frame];
self.imageView.image = image;
//等比例拉伸以适应图层的边界
self.imageView.contentMode = UIViewContentModeScaleAspectFit;
//设置图片不让超出边界
self.imageView.clipsToBounds = YES;
[self.headerView addSubview:self.imageView];
_tableview.tableHeaderView = self.headerView;
}
然后就是在scrollview的代理协议里面算一下等比例缩放
#pragma mark scrollViewDlegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
//获取tableview的偏移量
CGFloat offset_y = scrollView.contentOffset.y;
NSLog(@"%f",offset_y);
if (offset_y < 0) {
//拉伸后图片高度
CGFloat height = imgHeight - offset_y;
//放大的比例
CGFloat scale = height/imgHeight;
//设置拉伸后图片的frame
self.imageView.frame = CGRectMake(-(kWidth*scale-kWidth)/2, offset_y, kWidth*scale, height);
}

网友评论