tableViewcell 用autolayout约束的问题?求教

发布于 2022-09-01 06:13:41 字数 872 浏览 22 评论 0

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 )>"

发现运行时有这种提示,是不是说约束有问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

待天淡蓝洁白时 2022-09-08 06:13:41

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文