OGeek|极客世界-中国程序员成长平台

标题: ios - Autolayout,如何解决这些约束错误 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-13 10:43
标题: ios - Autolayout,如何解决这些约束错误

我在我的简单 UITableViewCell-Layout 中尝试了很多来解决自动布局约束错误,但现在卡住了。 TableView 的渲染效果符合预期,但警告很烦人,我不喜欢它运行有错误的布局,即使它看起来不错。

我逐步删除了标签,以查看约束错误是否会消失。只有左侧的图像和图像右侧的最顶部标签在没有约束错误的情况下播放得很好。但至少我添加了第二个标签并给它与“刚刚”标签相同的位置,错误再次发生。

下面我将列出约束,然后是来自控制台的错误消息:

enter image description here enter image description here enter image description here enter image description here

约束错误列出以下元素:

(
    "<NSLayoutConstraint:0x7fe004aa9010 V:|-(15)-[UILabel:0x7fe004aa83d0'Sunday, March 29, 2015 at...']   (Names: '|':UITableViewCellContentView:0x7fe004aa7bc0 )>",
    "<NSLayoutConstraint:0x7fe004aa9150 V:[UILabel:0x7fe004aa83d0'Sunday, March 29, 2015 at...']-(5)-[UILabel:0x7fe004aa8090'Name']>",
    "<NSLayoutConstraint:0x7fe004aa9240 V:[UILabel:0x7fe004aa8090'Name']-(5)-[UILabel:0x7fe004aa8920'lorem ipsum blaa foo bar']>",
    "<NSLayoutConstraint:0x7fe004aa92e0 V:[UILabel:0x7fe004aa8920'lorem ipsum blaa foo bar']-(33)-|   (Names: '|':UITableViewCellContentView:0x7fe004aa7bc0 )>",
    "<NSLayoutConstraint:0x7fe004ab09c0 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7fe004aa7bc0(0)]>"
)

在我看来,没有双重约束,每个约束都有自己的含义。谁能给我解释一下?



Best Answer-推荐答案


从错误输出来看,似乎在某些时候(可能在计算正确高度之前)您的单元格的高度为 0

"<NSLayoutConstraint:0x7fe004ab09c0 'UIView-Encapsulated-Layout-Height' V:[UITableViewCellContentView:0x7fe004aa7bc0(0)]>"

由于您的布局元素之间有一些正的垂直偏移(例如标签的 15 顶部偏移等),因此无法满足布局,因为这意味着某些 View 必须具有负高度,这不是可能。

由于您的布局看起来不错,我的建议是将最后一个约束(从最后一个标签到容器 View 的 33 底部偏移)的优先级设置为较低的优先级 (999)。这应该可以解决您的警告。

要真正找到为什么您的单元格在某个点的高度为 0,您必须查看如何计算单元格的高度(可能是自动调整大小)。如果您可以在那里发布您正在使用的代码,我可以尝试进一步帮助您。

让我知道进展如何。祝你好运!

关于ios - Autolayout,如何解决这些约束错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29985679/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4