又是装机量少但依然蛋疼的iOS7的问题.
关于含有label的cell的高度自适应的问题,在iOS 8.0以上都能轻松解决.
在-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath里面返回height=UITableViewAutomaticDimension就可以了.
那么烦人的iOS7该怎么办呢?
首先,在heightForRowAtIndexPath里面建立一个临时用的label,UILabel * tempLabel=[[UILabel alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width-168, CGFLOAT_MAX)];//随便写反正不添加到cell上面
tempLabel.text=@"........"
height=[thisClass labelheight:tempLabel];
[return height];
实现方法
+ (CGSize)labelheight:(UILabel *)detlabel
{
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = 5;// 字体的行间距
NSDictionary *attributes = @{
NSFontAttributeName:[UIFont systemFontOfSize:15],
NSParagraphStyleAttributeName:paragraphStyle
};
CGSize size = CGSizeMake([UIScreen mainScreen].bounds.size.width - 168, 1000);
CGSize contentactually = [detlabel.text boundingRectWithSize:size options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:attributes context:nil].size;
return contentactually;
}
有autoLayout可以这样做
Using Auto Layout in UITableView for dynamic cell layouts & variable row heights
参考下歪果仁的做法吧