一:修改tableView 的heightForRowAtIndexPath代理方法,每一行都设置为动态高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
UILabel *strLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 216, 50)];
strLabel.text = @"7359215783296175893217632157092379230176392105kgdlsagjkdslagkdasljgkdajgldsklagjlskdjgksajglskdjgsdgkasldjgklsdjgks"; //自己的字符串
strLabel.numberOfLines = 0; //为0不重要
strLabel.lineBreakMode = NSLineBreakByWordWrapping;
strLabel.font = [UIFont systemFontOfSize:15.0]; //字体选对了,文本高度才算的准
CGRect tmpRect = [strLabel.text boundingRectWithSize:CGSizeMake(216, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObjectsAndKeys:strLabel.font,NSFontAttributeName, nil] context:nil]; //216是宽度(重要),1000只要很大就行了。
CGFloat nameH = tmpRect.size.height;
return nameH+35;
}
二:在cell的xib设置里,设置这个高度动态变化的label(或者你的其他控件)的最大行数
总结:涉及到UILabel高度自适应里面文本高度,以及cell的设置。如果cell里面是图片数量不固定,可以嵌入UICollectionView或者本文中方法改变控件。