效果圖.gif
經(jīng)常看到有tableView的headView向上滑動(dòng)時(shí)是壓在tableview下面的,閑來無事就寫了一下。
有兩個(gè)問題需要解決:
1.如何把視圖加在tableview上但是tableview滑動(dòng)時(shí)做為子視圖的headview還不跟著滑動(dòng)。
2.如何設(shè)置tableview的起始位置锐锣,把headView 暴露出來,并且當(dāng)tableview向上滑動(dòng)時(shí)tableview不會(huì)回彈绳瘟。
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
self.navigationController.navigationBarHidden = YES;
UITableView *tableView = [UITableView new];
tableView.frame = self.view.frame;
[self.view addSubview:tableView];
tableView.delegate = self;
tableView.dataSource = self;
UIImageView *view = [[UIImageView alloc] initWithFrame:(CGRectMake(0, -200, DZHWidth, 200))];
view.image = [UIImage imageNamed:@"scrollImage1.jpg"];
[tableView insertSubview:view atIndex:0];
[view mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.view).offset(20);
make.right.left.equalTo(self.view);
make.height.mas_equalTo(200);
}];
tableView.contentInset = UIEdgeInsetsMake(200, 0, 0, 0);
self.tableView = tableView;
self.tableView.bounces = false;
}
- 先說一下第一個(gè)問題雕憔,如何在scrollView 上添加不跟著滑動(dòng)的子視圖:這里想到的解決辦法是添加約束,雖然headview是添加在scrollView 上糖声,但是headview的約束卻是參照self.view來添加的斤彼,所以無論tableView怎么滑動(dòng)headview都不會(huì)變。(masonry,設(shè)置頂部距離self.view距離為20蘸泻,所以位置就固定下來了琉苇,只要self.view不動(dòng)headView就肯定不會(huì)動(dòng))
[view mas_makeConstraints:^(MASConstraintMaker *make) {
make.top.equalTo(self.view).offset(20);
make.right.left.equalTo(self.view);
make.height.mas_equalTo(200);
}];
- 第二個(gè)問題是如何把headview暴露出來
[tableView insertSubview:view atIndex:0];
tableView.contentInset = UIEdgeInsetsMake(200, 0, 0, 0);
主要是設(shè)置一下tableview的content inset,讓他距離上方留下head view高度(200)的距離悦施。
這里測(cè)試了tableview addsubview 和 tableview.tableHeadView 雖然都可以添加到tableView上并扇,但是headView會(huì)在tableViewCell的上層,不能實(shí)現(xiàn)把headview壓在下方的效果抡诞。