{
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