个人是通是Masonry
+UITableView+FDTemplateLayoutCell
来实现单元格自适应,这是两个第三方.相关头文件
#import<Masonry.h>
#import <UITableView+FDTemplateLayoutCell.h>
首先重写表格单元格,在.h中声明属性和方法
@property(nonatomic,strong)UILabel * Chatlabel;
//方法用于传值返回单元格高度
-(void)setmytext:(NSString *)mytext;
接下来在.m中实现相关方法
-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) {
self.Chatlabel = [[UILabel alloc]init];
self.Chatlabel.numberOfLines = 0;
self.Chatlabel.font = [UIFont fontWithName:@"Arial-BoldItalicMT" size:20];
[self.contentView addSubview:self.Chatlabel];
//其实这段可以忽略!
}
return self;
}
-(void)setmytext:(NSString *)mytext{
self.Chatlabel.text = mytext;
//适配一个Label
[self.Chatlabel mas_makeConstraints:^(MASConstraintMaker *make) {
//其实这段也可以忽略
make.top.equalTo(self.contentView.mas_top);
make.left.equalTo(self.contentView.mas_left);
make.right.equalTo(self.contentView.mas_right);
make.bottom.equalTo(self.contentView.mas_bottom);
}];
}
以上属于View层,接下是是属于Controller层
//相关注册单元格单元格必须是注册,才能够适配
self.chattabel = [[UITableView alloc]init];//初始化表格
self.chattabel.estimatedRowHeight = 300;//估算高度
self.chattabel.separatorStyle = NO;//去掉分割线
self.chattabel.delegate = self;//设置代理
self.chattabel.dataSource = self;
[self addSubview:self.chattabel];//加入视图
[self.chattabel mas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self);
}];//Masonry适配
[self.chattabel registerClass:[ChatTableViewCell class] forCellReuseIdentifier:@"cell"];//注册单元格
//设置单元格内容
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
ChatTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];//启用复用池
[cell setmytext:self.cellarray[indexPath.row]];//调用从写单元格方法,将数组的内容传值
return cell;
}
//返回单元格高的
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
//返回的是从写单元格的方法,也就是返回的字符串在Label内的高度
return [tableView fd_heightForCellWithIdentifier:@"cell" configuration:^(ChatTableViewCell * cell) {
[cell setmytext:self.cellarray[indexPath.row]];
}];
}
能力有限,只能写这么多.有什么问题欢迎大家留言指正,我看到一定回复.感谢!!!!!!!
网友评论