思路:
将自定义的headerview作为tableview的子视图放到tableView上面,而不是作为tableView.tableHeaderView,然后设置tableView的contentInset为合适的值,在tableView滑动的时候,动态改变headerview的位置和者大小,使headerview有悬浮、下拉放大的动画效果。
代码如下:
UITableView *tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT) style:UITableViewStyleGrouped];
tableView.dataSource = self;
tableView.delegate = self;
tableView.contentInset = UIEdgeInsetsMake(200, 0, 0, 0);
self.tableView = tableView;
headerImage = [[UIImageView alloc]initWithFrame:CGRectMake(0, -200, SCREEN_WIDTH, 200)];
headerImage.image = [UIImage imageNamed:@"girl.jpg"];
headerImage.contentMode = UIViewContentModeScaleAspectFill;
headerImage.clipsToBounds = YES;
[self.view addSubview:self.tableView];
[self.tableView addSubview:headerImage];
实现ScrollView代理方法:
#pragma mark - ScrollView代理方法
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if (scrollView == self.tableView) {
CGFloat offset_y = scrollView.contentOffset.y;
headerImage.frame = CGRectMake(0, offset_y, SCREEN_WIDTH, -offset_y);
}
}