我不确定发生了什么以及如何处理。我在一个单元格中有一个 UIView,我使用 IB 设置了约束,并且由于某种原因它延伸到单元格的末尾。我怎样才能阻止它伸展。
结果如下:
我正在动态注入步进控件,但正如您所见,UIView 延伸到单元格的末尾。我尝试了引脚宽度,然后它完全搞砸了一切,甚至不显示 UIView。
这是约束的屏幕截图:
我不确定发生了什么以及如何处理。我在一个单元格中有一个 UIView,我使用 IB 设置了约束,并且由于某种原因它延伸到单元格的末尾。我怎样才能阻止它伸展。
结果如下:
我正在动态注入步进控件,但正如您所见,UIView 延伸到单元格的末尾。我尝试了引脚宽度,然后它完全搞砸了一切,甚至不显示 UIView。
这是约束的屏幕截图:
好的,让我在这里画一些区别。
最简单的方法是你总是在单元格中有步进器(并且没有 UIView)。对于那些我们不应该看到步进器的单元格,您将其设置hidden
为 YES;对于我们应该看到它的那些单元格,您将其设置hidden
为 NO。这就是我会做的。
执行此操作的程序员方法是您的单元格中根本没有任何蓝色 UIView。您在代码中添加步进器,并在代码中提供其约束以定位它。你说:
所以我不必硬编码坐标
但是在代码中添加约束并不是坐标的“硬编码”。使用约束,您可以根据父视图的插图概念性地描述位置,并且随着父视图调整大小,您仍然可以正确定位。因此,添加步进器及其约束没有哲学上的反对意见,不这样做只是懒惰。
懒惰但浪费的方法是做你正在做的事情,即在笔尖中添加蓝色的UIView作为指南。但是,即使您确实使用蓝色 UIView 作为指南,如果您的约束是正确的,您应该能够正确地做到这一点。我刚刚尝试过,但无法重现该问题:我的蓝色视图出现在我的单元格中,与它出现在 Interface Builder 中的位置相同。
即时解决方案是不要在从中绘制 UITableViewCell 的 nib 中使用 Autolayout - 即在文件检查器中取消选中此 nib 的“使用自动布局”。因此,您将使用老式的弹簧和支柱(自动调整大小)来定位子视图。