我对tableViewHeader有一个奇怪的问题,我在滚动时调整了大小。
首先滚动到顶部后,tableHeader和单元格之间有空格,每次下一次滚动后,空间增加。
在tableViewHeader自定义类中,滚动后我改变高度并返回,然后重置它,因此UITableView将更新帧大小。
第一节视图,UITableViewController,
的高度为0.1fself.automaticallyAdjustsScrollViewInsets = NO;
我仔细检查了tableViewHeader是否具有正确的高度。
我尝试了很多解决方案,但对我没什么用。
会发生什么?谁在增加额外的空间?为什么?
编辑:表委托和数据源方法
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
return 0.001;
}
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return 0.001;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 1;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0 && indexPath.row == 0) {
return [self nameCell];
}
return nil;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == 0 && indexPath.row == 0) {
return 60;
}
return 0;
}
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
if (section == 0) {
UIView* view = [[UIView alloc] initWithFrame: CGRectMake(0.0f, 0.0f, self.tableView.frame.size.width, 0.001f)];
return view;
}
return nil;
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView == self.tableView) {
[_tableHeader didScroll:scrollView.contentOffset];
}
}
答案 0 :(得分:1)
找到解决方案。
首先,不要在自定义类中设置tableViewHeader。在插入tableView的控制器中执行此操作。
第二步:在beginUpdates中设置tableViewHeader,endUpdates。
我不知道"更新"对于与tableViewHeader一起使用的单元格,但它可以正常工作
答案 1 :(得分:0)
我通过将标题(自动布局)放入一个固定的UIView作为子视图的包装视图来解决这个问题。差距将消失。
self.header = [[NSBundle mainBundle] loadNibNamed:@"FriendDetailHeaderView"
owner:nil
options:nil][0];
self.header.frame = CGRectMake(0, 0, ScreenWidth, ScreenWidth/16*9+25);
UIView *aView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, ScreenWidth, ScreenWidth/16*9+25)];
aView.backgroundColor = [UIColor blackColor];
[aView addSubview:self.header];
self.tableView.tableHeaderView = aView;
自动布局tableViewHeader有时无法解决。但在我之前的项目中,将自动布局视图设置为tableView.tableViewHeader,它完美地运行