iOS-UITableView懸停處理

主要是對(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;
}

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 廢話不多說(shuō),直接上干貨 ---------------------------------------------...
    小小趙紙農(nóng)閱讀 3,436評(píng)論 0 15
  • *7月8日上午 N:Block :跟一個(gè)函數(shù)塊差不多,會(huì)對(duì)里面所有的內(nèi)容的引用計(jì)數(shù)+1,想要解決就用__block...
    炙冰閱讀 2,547評(píng)論 1 14
  • 本手冊(cè)目的在于,當(dāng)我需要堅(jiān)持一個(gè)目標(biāo)或面對(duì)困境時(shí),不因惰性與情緒難以實(shí)施計(jì)劃。傾向于如何推動(dòng)你的行動(dòng),無(wú)需正能量進(jìn)...
    維維醬閱讀 426評(píng)論 0 1