整理一下:tableHeaderView

2018-03-02  本文已影响10人  西门欥雪
图片
- (void)viewDidLoad {
    [super viewDidLoad];
    [self.view addSubview:self.tableView];
    [_tableView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.edges.mas_equalTo(UIEdgeInsetsMake(20, 0, 0, 0));
}];

//底部bgView

 self.bgView  = [[UIView  alloc]init];
 self.bgView.backgroundColor = [UIColor greenColor];

//放循环滚动视图
#define HeaderViewHeight 100
self.headerView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,   HeaderViewHeight)];
self.headerView.backgroundColor = [UIColor redColor];
[self.bgView addSubview:self.headerView];

//最下面的展示文字
_content = [UILabel new];
_content.numberOfLines = 0;
_content.font = [UIFont systemFontOfSize:15];
self.content.text = @"有这么一种需求,在列表顶端显示一些别样的数据,而这个别样的数据则  需要通过一个别样的 View 来展现,它便是 UITableView 的 tableHeaderView。倘若 tableHeaderView 里的内容很固定,高度不要随着内容的不同而改变,这样还好。如果,高度是需要动态改变的,某些人(比如我)可能就会遇到这样一个难题有这么一种需求,在列表顶端显示一些别样的数据,而这个别样的数据则需要通过一个别样的 View 来展现,它便是 UITableView 的 tableHeaderView。倘若 tableHeaderView 里的内容很固定,高度不要随着内容的不同而改变,这样还好。如果,高度是需要动态改变的,某些人(比如我)可能就会遇到这样一个难题";
[self.bgView addSubview:_content];
//自己封装的计算文字的size(展示时的字体font要和计算时的font一样才准确)
CGFloat height = [self getLabelSize:self.content.text withFontSize:[UIFont systemFontOfSize:15] width:self.view.frame.size.width];
_content.frame = CGRectMake(0, HeaderViewHeight, self.view.frame.size.width, height);
CGRect newFrame = self.bgView.frame;
newFrame.size.height = newFrame.size.height+height+HeaderViewHeight;

 self.bgView.frame = newFrame;
 [self.tableView setTableHeaderView:self.bgView];
[self.tableView beginUpdates];
[self.tableView setTableHeaderView:self.bgView];
[self.tableView endUpdates];

}

计算文字高度的方法:

-(CGFloat)getLabelSize:(NSString *)string withFontSize:(UIFont *)font width:(CGFloat)width {
  CGSize textSize = [string boundingRectWithSize:CGSizeMake(width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:font} context:nil].size;
  return textSize.height;
}
上一篇下一篇

猜你喜欢

热点阅读