我正在使用 UITableView。表格视图有一个带有 UIImageView 的 HeaderView,当用户滚动表格视图时它会改变它的高度。
除此之外我还有一个自定义的uiview,用于tableview的部分..我的问题是在为tableview设置内容Inset之后,该部分不跟随表格的滚动..
滚动前
滚动后
肯定是内容插入的问题,我做了各种测试,但找不到解决方案...
我希望tableView的部分跟随滚动并在它进入状态栏时停止(self.view.frame.origin.y的大约25个点)
我应该遵循哪条路径来解决我的问题?
这是我正在使用的代码
为节标题注册 Xib
- (void)viewDidLoad {
[super viewDidLoad];
_tableView.delegate = self;
_tableView.dataSource = self;
_tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
[_tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:cellID];
[_tableView registerNib:[UINib nibWithNibName:@"DashboardTopHeader" bundle:nil] forHeaderFooterViewReuseIdentifier:dashboardTopHeader];
[self setupHeaderView];
}
生成节标题
#pragma mark - Dashboard Top Header
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
DashboardTopHeader *header = [tableView dequeueReusableHeaderFooterViewWithIdentifier:dashboardTopHeader];
return header;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 100;
}
用照片设置 TableView 的 Header 视图
-(void)setupHeaderView {
_headerView = [[UIView alloc] init];
_headerView = self.tableView.tableHeaderView;
_tableView.tableHeaderView = nil;
[_tableView addSubview:_headerView];
// 130 is Height of headerView
CGFloat newHeight = 130 - 50 /2;
_tableView.contentOffset = CGPointMake(0, -newHeight);
_tableView.contentInset = UIEdgeInsetsMake(newHeight, 0, 0, 0 );
[self updateHeaderView];
}
-(void)updateHeaderView {
CGFloat newHeight = 130 - 50 /2;
CGRect headerFrame = CGRectMake(0, -newHeight, self.tableView.frame.size.width, 130);
if (self.tableView.contentOffset.y < newHeight) {
headerFrame.origin.y = self.tableView.contentOffset.y;
headerFrame.size.height = - self.tableView.contentOffset.y + 50/2;
}
_headerView.frame = headerFrame;
}
使用 TableView 委托滚动内容
-(void)scrollViewDidScroll:(UIScrollView *)scrollView {
[self updateHeaderView];
}