RT,先上图,第一张是IOS7.1下得界面。第二张是IOS8的界面,虚拟机都是用得4S
第二张是我想要的效果,但是到7.1版本上会有空白,感觉是Cell中contentView没约束好?
下面再补上cell的XIB图,view和相关知识都是固定了宽度
图片描述
"<NSLayoutConstraint:0x7be2e870 V:[UILabel:0x7be29290]-(-0.5)-| (Names: '|':UITableViewCellContentView:0x7be298c0 )>",
"<NSLayoutConstraint:0x7be2e930 V:[UILabel:0x7be29290]-(0)-| (Names: '|':UITableViewCellContentView:0x7be298c0 )>"
发现运行时有这种提示,是不是说约束有问题?
我最近也在看利用自动布局来让cell调整自己的高度。
以前的做法。
以前的做法是这样的,ios7里封装了一个可以计算label高度的方法(ios6你可以查一下哈)。
+ (CGSize)labelheight:(UILabel *)detlabel
{
CGSize size = CGSizeMake(SCREENWIDTH - 16, 1000);
CGSize contentactually = [detlabel.text boundingRectWithSize:size options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:[NSDictionary dictionaryWithObjectsAndKeys:detlabel.font,NSFontAttributeName,nil] context:nil].size;
return contentactually;
}
我每次都是根据label的文字来计算cell高度然后在- (CGFloat)tableView:(UITableView *)atableView
heightForRowAtIndexPath:(NSIndexPath *)indexPath
方法里返回这个cell的高度。
可行,但是代码量比较多。
新方法-利用自动布局的方式。
在stackoverflow上有一篇文章,推荐你看一下。Using Auto Layout in UITableView for dynamic cell layouts & variable row heights是利用自动布局的方式来自动计算cell的高度,上面有一个ios7的demo和ios8的demo。
题主可以自己看一下。我也尝试了一下,因为在尝试手写约束还没有太明白我就不贴代码了。
最终的效果是
但是第一行的label无法自适应高度。
如果你是利用我第二种办法出现这种问题的话,那么是约束没设置好的问题,你的编译器也提醒你了。