关于在iOS 7的环境下实现有label的cell高度自适应

2015-08-12  本文已影响0人  JohnDEEEN

又是装机量少但依然蛋疼的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

参考下歪果仁的做法吧

上一篇 下一篇

猜你喜欢

热点阅读