self.topView = [UIView new];
self.topView.backgroundColor = [UIColor redColor];
[self.tableView addSubview:self.topView];
[self.topView mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.mas_equalTo(-50);
make.left.mas_equalTo(0);
make.size.mas_equalTo(CGSizeMake(self.tableView.frame.size.width, 50));
}];
// 将topView移到最顶层,防止被其他view挡住
[self.tableView bringSubviewToFront:self.topView];
// 设置tableView的向下偏移50
self.tableView.contentInset = UIEdgeInsetsMake(50, 0, 0, 0);
在UIScrollView的代理方法中设置滚动偏移,此处我用Autolayout改变topView距离tableView上约束的constant值,也可改变它的frame中的y值来实现
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat offset = self.tableView.contentOffset.y;
[self.topView mas_updateConstraints:^(MASConstraintMaker *make) {
// 此处有加上navigationBar的高度
make.top.mas_equalTo(offset + 64);
}];
[self.tableView layoutIfNeeded];
}