主要是對(duì)懸浮條的處理,剛開(kāi)始考慮在view上添加一份同樣布局的view,通過(guò)隱藏和顯示來(lái)實(shí)現(xiàn),由于存在兩個(gè)同樣布局的view,處理按鈕事件邏輯相對(duì)復(fù)雜,而用改變懸浮條Superview的方式,實(shí)現(xiàn)就比較簡(jiǎn)單。
iOS-UITableView懸停拉伸處理.gif
-(void)createTableView {
self.tableView = [[UITableView alloc] initWithFrame:[UIScreen mainScreen].bounds style:UITableViewStylePlain];
self.tableView.delegate = self;
self.tableView.dataSource = self;
[self.view addSubview:self.tableView];
self.tableView.showsVerticalScrollIndicator = NO;
//沒(méi)有把頭視圖添加到tableHeaderView上,而是設(shè)置contentInset來(lái)實(shí)現(xiàn)
self.tableView.contentInset = UIEdgeInsetsMake(OFFSETHEIGHT, 0, 0, 0);
[self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
[self.tableView addSubview:[self createHeaderView]];
}
-(UIView *)createHeaderView {
self.headerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, -OFFSETHEIGHT, SCREENW, OFFSETHEIGHT)];
self.headerImageView.image = [UIImage imageNamed:@"my_card_img_bg"];
// 這行對(duì)于實(shí)現(xiàn)拉伸放大效果很重要
self.headerImageView.contentMode = UIViewContentModeScaleAspectFill;
self.headerImageView.clipsToBounds = YES;
self.headerImageView.userInteractionEnabled = YES;
[self.headerImageView addSubview:self.btnView];
return self.headerImageView;
}
-(UIView *)btnView {
if (!_btnView) {
_btnView = [[UIView alloc] initWithFrame:CGRectMake(0, 120, SCREENW, 30)];
_btnView.backgroundColor = [UIColor grayColor];
[self createButton:_btnView array:@[@"關(guān)注",@"群組",@"粉絲"] startTag:1000];
}
return _btnView;
}
//添加標(biāo)題按鈕
-(void)createButton:(UIView *)view array:(NSArray *)arr startTag:(NSInteger)tag{
CGFloat btnW = SCREENW / arr.count;
for (int i = 0; i < arr.count; i ++) {
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(i * btnW, 0, btnW, 30)];
[button setTitle:arr[i] forState:UIControlStateNormal];
[button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor orangeColor] forState:UIControlStateSelected];
button.titleLabel.font = [UIFont systemFontOfSize:12];
[button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
button.tag = tag + i;
[view addSubview:button];
}
view.userInteractionEnabled = YES;
}
//監(jiān)聽(tīng)tableview的滑動(dòng),處理拉伸放大和懸浮條,對(duì)于導(dǎo)航條透明度沒(méi)做處理
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat offSetY = scrollView.contentOffset.y;
if (offSetY < -OFFSETHEIGHT) {
self.navigationController.navigationBar.hidden = YES;
//處理拉伸放大效果
self.headerImageView.y = offSetY;
self.headerImageView.height = -offSetY;
//處理懸浮條
self.btnView.y = OFFSETHEIGHT-30 + (-offSetY - OFFSETHEIGHT);
}else if (offSetY>= -94) {
//處理懸浮條
self.btnView.y = 64;
[self.view addSubview:self.btnView];
self.navigationController.navigationBar.hidden = NO;
}else {
//處理懸浮條
self.btnView.y = OFFSETHEIGHT-30;
[self.headerImageView addSubview:self.btnView];
self.navigationController.navigationBar.hidden = YES;
}
}