我正在使用UITableView。 表视图有一个带有UIImageView的HeaderView,当用户滚动表视图时,它会改变它的高度。
除此之外,我还有一个自定义uiview用于tableview的部分..我的问题是在为tableview设置内容Inset之后,该部分不跟随表的滚动..
滚动前
滚动后
肯定是内容问题,我做了各种测试,但我找不到解决方案......
我希望tableView的部分跟随滚动并在状态栏下停止(大约25点self.view.frame.origin.y)
我应该遵循哪条路来解决我的问题?
这是我正在使用的代码
注册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的标题视图
-(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];
}