以下只是简单的实现一下功能,介绍一下原理,希望可以帮到大家:
- (nullable UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
static NSString * identifier = @"headView";
UITableViewHeaderFooterView * headView = [tableView dequeueReusableHeaderFooterViewWithIdentifier:identifier];
if (nil == headView) {
headView = [[UITableViewHeaderFooterView alloc] initWithReuseIdentifier:identifier];
_headView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 100)];
_headView.contentMode = UIViewContentModeScaleAspectFill;
_headView.clipsToBounds = YES;
_headView.image = [UIImage imageNamed:@"4"];
[headView addSubview:_headView];
}
return headView;
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
float offsetY = scrollView.contentOffset.y;
CGRect tempFrame = _headView.frame;
if (offsetY < 0) {
// 往下拉
int offsetX = -scrollView.contentOffset.y/4;
tempFrame.origin.x = -offsetX;
tempFrame.origin.y = offsetY;
tempFrame.size.width = CGRectGetWidth(_tabView.frame) + 2*offsetX;
tempFrame.size.height = 100 - offsetY;
}else{
tempFrame.origin.x = 0;
tempFrame.origin.y = 0;
tempFrame.size.width = CGRectGetWidth(_tabView.frame);
tempFrame.size.height = 100;
}
_headView.frame = tempFrame;
}
其中_headView是一个UIImageView的成员变量,其主要操作在
- (void)scrollViewDidScroll:(UIScrollView *)scrollView方法里。