tableView - headView 随下拉拉伸变化、导航栏透明度变化

tableView - headView 随下拉拉伸变化、导航栏透明度变化_第1张图片
TabViewHeader.gif

{

CGRect headerVireRect = CGRectMake(0, 0, HeaderViewWidth, HeaderViewHeight);

// 并不是 tableView 的 tableHeaderView, 可以在此上面添加各种控件(支持自动布局)
self.headerContentView = [[UIView alloc] initWithFrame:headerVireRect];
self.headerContentView.backgroundColor = [UIColor redColor];

// 添加headerView
[self.tableView addSubview:self.headerContentView];
// 与contentView高度一样防止数据被遮挡
self.tableView.tableHeaderView = [[UIView alloc] initWithFrame:headerVireRect];


// 自定义 添加 控件1
UILabel *label = [UILabel new];
label.text = @"label";
label.backgroundColor = [UIColor orangeColor];
[self.headerContentView addSubview:label];
[label mas_makeConstraints:^(MASConstraintMaker *make) {
    make.center.mas_equalTo(self.headerContentView);
}];
// 自定义 添加 控件2
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
[button setTitle:@"button" forState:UIControlStateNormal];
button.backgroundColor = [UIColor yellowColor];
[self.headerContentView addSubview:button];
[button mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.and.left.mas_equalTo(self.headerContentView).mas_offset(20);
}];

}

/**

  • 重写这个代理方法就行了,利用contentOffset这个属性改变frame
  • 往上滑动contentOffset值为正,大多数都是监听这个值来做一些事
    */
  • (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    CGFloat offsetY = scrollView.contentOffset.y;
    if (offsetY < 0) {
    self.headerContentView.frame = CGRectMake(offsetY/2, offsetY, HeaderViewWidth - offsetY, HeaderViewHeight - offsetY); // 修改头部的frame值就行了
    }
    }

设置 导航栏透明度变化

// 先设置 导航栏颜色
self.navigationController.navigationBar.barTintColor = [UIColor blueColor];

- (void)scrollViewDidScroll:(UIScrollView *)scrollView{
    // 类似
    self.navigationController.navigationBar.alpha = scrollView.contentOffset.y/200;
}

1

你可能感兴趣的:(tableView - headView 随下拉拉伸变化、导航栏透明度变化)