首页 > tableViewcell 用autolayout约束的问题?求教

tableViewcell 用autolayout约束的问题?求教

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无法自适应高度。
如果你是利用我第二种办法出现这种问题的话,那么是约束没设置好的问题,你的编译器也提醒你了。

【热门文章】
【热门文章】