我在理解如何使用自动布局的逻辑时遇到问题

时间:2019-05-14 12:20:50

标签: ios swift tableview height nslayoutconstraint

这是我的项目资源库:

https://github.com/alonsd/MoviesApi

我在这里给出整个项目的原因是因为问题出在.xib文件中,而不是代码问题,因此,我认为这是我寻求此问题的更好方法。

尝试从我拥有的某些数据填充表视图内的自定义单元格时遇到以下问题。

  

无法同时满足约束条件。       以下列表中至少有一个约束是您不想要的约束。

因此,我在该站点上寻找解决方案,并遇到了一种很好的调试方法来找出问题所在,我进行了扩展,以覆盖NSLayoutDescription的description var,并输出了id和常量,以便更快,更好地了解位置。问题出在哪里。因此,一旦我删除了.xib文件中img中的高度和权重,显然该错误就消失了,但这将使图像从.xib中完全消失。我进行布局的方式具体有什么问题?我还尝试在.xib文件中使用“重置为建议的约束”,它使错误消失,但是一旦我上下滚动,每个单元格的高度都会变得很大。

对于另一个我面临的问题-我认为我不确定约束的工作方式。那是因为当您查看我的xib文件时,您可以看到图像与单元格右端之间的主要空间,但是在列表本身中没有任何空间,因此我对此感到非常困惑。

这是带有tableview的模拟器的图像-

https://imgur.com/q0RWYAd

这是我的.xib文件的图像,其中的空格实际上没有出现在模拟器中-

https://imgur.com/r3vnAe6

(我不知道如何将它们直接放在帖子中)

3 个答案:

答案 0 :(得分:1)

通常,您应具有4个约束。一段时间以来,我遇到了同样的问题,对我而言,效果最好的最佳解决方案是使用百分比表示高度或宽度,然后使用宽高比。例如,元素的高度将是视图的20%,然后我将宽高比用于宽度等。 也不要对所有5个元素都使用stackView。将影片图像保留在stackView之外。

答案 1 :(得分:1)

1-在此处删除宽度和高度限制

enter image description here

2-在此处删除containerView前导约束

enter image description here 3-将尾随约束添加到stackview

4-将一个值添加到stackview前导常量

enter image description here

5-选择所有标签,并将垂直内容调整为1000

enter image description here

6-选择textContainer堆栈并将间距设置为20

答案 2 :(得分:1)

问题是您使用了StackView,但是stackveiws也需要一些约束。enter image description here

enter image description here

这是我用来获取结果的约束 我在堆栈视图中放置了4个元素,并将图像赋予前导顶部宽度和高度