?首先我們在cell.h中定義 一個方法
+ (CGFloat)getCellHeightContent:(NSString *)content;
在cell.m 中實現(xiàn)這個方法
首先第一步 自己先要實現(xiàn)以下方法
+ (CGFloat)getHeightText:(NSString *)text font:(UIFont *)font labelWidth:(CGFloat)width{
NSDictionary *attrDic = @{NSFontAttributeName:font};
CGRect strRect = [text boundingRectWithSize:CGSizeMake(width,MAXFLOAT) options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin attributes:attrDic context:nil];
return strRect.size.height;
}
在來實現(xiàn)我們前面定義的那個方法
+(CGFloat)getCellHeightContent:(NSString *)content{
CGFloat margin = 60 * FitHeight;//這個是你除去label的高度,顯示在cell中其他控件的高度
return [self? getHeightText:content font:tabFont labelWidth:ScreenWidth - 100 * FitWidth] + margin;
}
接著我們在ViewController.h頁面中調(diào)用就可以了
在這個方法里我們首先要定義label的位置,賦值,高度(label的內(nèi)容是自適應(yīng)的)
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.ContentLabel.text = [NSString stringWithFormat:@"%@",CommentModel.content];
cell.ContentLabel.numberOfLines = 0;
cell.ContentLabel.lineBreakMode = NSLineBreakByWordWrapping;
CGSize size = [cell.ContentLabel sizeThatFits:CGSizeMake(ScreenWidth - 100 * FitWidth, MAXFLOAT)];//根據(jù)文字的長度返回一個最佳寬度和高度
cell.ContentLabel.frame = CGRectMake(cell.HeadPortraitimage.x + cell.HeadPortraitimage.width + 10 * FitWidth, cell.NameLabel.y + cell.NameLabel.height, ScreenWidth - 100 * FitWidth, size.height);//label的位置寬度和高度自適應(yīng)
}
最后我們來定義cell的高度 ?這個時候我們就要調(diào)用我們前面寫的那個方法
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
CommentListModel * CommentModel = self.CommentArray[indexPath.row];//用你自己的cell
return [CommentTableViewCell getCellHeightContent:[NSString stringWithFormat:@"%@",CommentModel.content]];//這里注意,要給你的label賦一次值
}
注:這是我在做一個項目中給新聞評論的內(nèi)容來自適應(yīng),并把這個內(nèi)容一起放到UITableViewCell中顯示,自己總結(jié)的一點小小的經(jīng)驗,希望對你們有所幫助,如有其他好的方法,還希望您賜教!