我在理解如何使用自动布局的逻辑时遇到问题
I have a problem understanding the logic of how to work with autolayout
这是我的项目存储库:
https://github.com/alonsd/MoviesApi
我在这里给出整个项目的原因是因为问题出在 .xib 文件中而不是代码问题,因此我认为这将是我获得此问题帮助的更好方式。
当我尝试根据我拥有的一些数据在 table 视图中填充自定义单元格时,我遇到了以下问题。
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
所以我在这个网站上寻找解决方案并找到了一个很好的调试方法来找出问题所在,我做了一个扩展来覆盖 NSLayoutDescription 的描述变量并打印出 id 和常量以更快更好了解问题所在。所以显然,一旦我从 .xib 文件中的 img 中删除了身高和体重,错误就会消失,但这会使图像从 .xib 中完全消失。我进行布局的方式具体有什么问题?我还尝试在我的 .xib 文件上使用 "reset to suggested constraints",它使错误消失,但它也会使每个单元格高度在我上下滚动时变得很大。
对于我面临的另一个问题 - 我想我不确定约束是如何工作的。那是因为当你查看我的 xib 文件时,你会看到图像和单元格右端之间有一个主要的 space,但在列表本身中什么也没有,所以我对此感到非常困惑。
这是带有 table 视图的模拟器图像 -
这是我的 .xib 文件的图像,其中 space 实际上没有出现在模拟器中 -
(我不知道如何将它们直接放在 post 中)
一般来说,你应该有 4 个约束。我有一段时间和你有同样的问题,对我来说,最有效的最佳解决方案是使用高度或宽度的百分比,然后使用纵横比。例如,元素的高度将是视图的 20%,然后我使用纵横比作为宽度等。
也不要对所有 5 个元素使用 stackView。将电影图像留在 stackView 之外。
1- 在此处删除宽度和高度限制
2- 在此处删除 containerView 前导约束
3- 向堆栈视图添加尾随约束
4- 向 stackview 前导常量添加一个值
5- select 所有标签并将垂直内容调整为 1000
6- select textContainer 堆栈并将间距设置为 20
问题是您使用了 StackView,但 stackveiws 也需要一些约束。
这是我用来得到结果的约束条件
我将 4 个元素放在堆栈视图中,并将图像提供给前导顶部宽度和高度
这是我的项目存储库:
https://github.com/alonsd/MoviesApi
我在这里给出整个项目的原因是因为问题出在 .xib 文件中而不是代码问题,因此我认为这将是我获得此问题帮助的更好方式。
当我尝试根据我拥有的一些数据在 table 视图中填充自定义单元格时,我遇到了以下问题。
Unable to simultaneously satisfy constraints. Probably at least one of the constraints in the following list is one you don't want.
所以我在这个网站上寻找解决方案并找到了一个很好的调试方法来找出问题所在,我做了一个扩展来覆盖 NSLayoutDescription 的描述变量并打印出 id 和常量以更快更好了解问题所在。所以显然,一旦我从 .xib 文件中的 img 中删除了身高和体重,错误就会消失,但这会使图像从 .xib 中完全消失。我进行布局的方式具体有什么问题?我还尝试在我的 .xib 文件上使用 "reset to suggested constraints",它使错误消失,但它也会使每个单元格高度在我上下滚动时变得很大。
对于我面临的另一个问题 - 我想我不确定约束是如何工作的。那是因为当你查看我的 xib 文件时,你会看到图像和单元格右端之间有一个主要的 space,但在列表本身中什么也没有,所以我对此感到非常困惑。
这是带有 table 视图的模拟器图像 -
这是我的 .xib 文件的图像,其中 space 实际上没有出现在模拟器中 -
(我不知道如何将它们直接放在 post 中)
一般来说,你应该有 4 个约束。我有一段时间和你有同样的问题,对我来说,最有效的最佳解决方案是使用高度或宽度的百分比,然后使用纵横比。例如,元素的高度将是视图的 20%,然后我使用纵横比作为宽度等。 也不要对所有 5 个元素使用 stackView。将电影图像留在 stackView 之外。
1- 在此处删除宽度和高度限制
2- 在此处删除 containerView 前导约束
4- 向 stackview 前导常量添加一个值
5- select 所有标签并将垂直内容调整为 1000
6- select textContainer 堆栈并将间距设置为 20
问题是您使用了 StackView,但 stackveiws 也需要一些约束。
这是我用来得到结果的约束条件 我将 4 个元素放在堆栈视图中,并将图像提供给前导顶部宽度和高度