我们都知道利用XIB可以很轻松的设置一个label为自适应高度,但如果将一个label放在tableviewcell上面,并且这个cell还想用XIB描述,这个时候就需要先确定label的高度再确定cell的高度,最后才能显示到屏幕上。
所以在这里就简单的说一下如何实现用XIB描述一个自适应高度的cell
1.首先用XIB创建一个cell:
2.确定“买家留言”label的位置,再设置右边label约束为:距左,距右,还有跟买家留言label顶部对齐。最后再设置右边label的Lines为0
3.在实体类的.h文件里:
@interface CustomHeightCell : UITableViewCell@property (weak, nonatomic) IBOutlet UILabel *title;@property (weak, nonatomic) IBOutlet UILabel *messgae;@property (nonatomic, copy) NSString* content;@property (nonatomic, assign) CGFloat cellHeight;@end
title:“买家留言”label
message:显示留言信息的label
content: 留言内容
cellHeight:通过留言内容计算出来的cell高度
4..m文件中
@implementation CustomHeightCell- (void)awakeFromNib { [super awakeFromNib]; self.messgae.textColor = [UIColor lightBlackTextColor]; self.typeTitle.textColor = [UIColor lightGrayTextColor];}- (void)setContent:(NSString *)content{ _content = content; CGRect r = [content boundingRectWithSize:CGSizeMake(self.messgae.frame.size.width,10000) options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingTruncatesLastVisibleLine) attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:13.f]} context:nil]; self.cellHeight = r.size.height; self.messgae.text = content;}@end
在这里要注意:设置的字体大小(13.f)要跟XIB里面messageLabel的字体大小一样,这样才能保证计算准确。
最后正常的调用这个cell就行了。