使用 SDAutoLayout 使UITableHeaderView高度自适用时,
_table.tableHeaderView = self.headerView;
[_table.tableHeaderView layoutIfNeeded];
这样,tableHeaderView可以正常显示,但是我遇到,这样情况
UITableViewCell 也高度自适用时。会出现下面情况
列表在上下滚动时,tableView中间会多出一块,可以确定的这个是由于tableHeaderView高度自适用引起的,如果不设tableHeaderView,或
tableHeaderView里的的控件没有高度自适,就不会出现这样的问题。我的tableHeaderView里有一个UILabel是高度自适用,如何把这样Label设成固定的高度就不会出
现这个问题,代码如下。
_signatureLabel = [[UILabel alloc]init];
[_headerView addSubview:_signatureLabel];
_signatureLabel.textColor = KColorFont1;
_signatureLabel.textAlignment = NSTextAlignmentCenter;
_signatureLabel.font = KFontPR10;
_signatureLabel.text = @"这个人很懒,什么都没有写~这个人很懒,什么都没有写~这个人很懒,什么都没有写~";
_signatureLabel.sd_layout
.leftSpaceToView(_headerView, GetWidth6(90))
.rightSpaceToView(_headerView, GetWidth6(90))
.topSpaceToView(_idLabel, GetWidth6(10))
.autoHeightRatio(0);
[_headerView setupAutoHeightWithBottomView:_signatureLabel bottomMargin:KLeftMargin];
各情尝试最后得到解决方法如下
初始化时
- (void) initUI
{
_table = [[UITableView alloc]init];
_table.backgroundColor = [UIColor clearColor];
_table.separatorStyle =UITableViewCellSeparatorStyleNone;
........
_table.tableHeaderView = self.headerView;
[_table.tableHeaderView layoutIfNeeded];
}
在给header里自适用高度的 label 赋值后, 重新设置一下 tableViewHeader
- (void) setContent
{
......
_signatureLabel.text = sign;
_table.tableHeaderView = self.headerView;
[_table.tableHeaderView layoutIfNeeded];
}
初始化时执行 layoutIfNeeded , 给自适应高度的控件赋值后 需要 给table的headerView重新赋值并执行layoutIfNeeded