我觉得这UIViews
通常UILabels
是根据业务逻辑来显示/隐藏的一种相当常见的范例。我的问题是,使用AutoLayout响应隐藏视图的最佳方法是什么,就像它们的框架是0x0一样。这是1-3个功能的动态列表的示例。
现在,从按钮到最后一个标签,我有10px的顶部空间,当标签隐藏时,它显然不会向上滑动。到目前为止,我已经创建了此约束的出口,并根据要显示的标签数修改常数。因为我使用负常量值将按钮向上推到隐藏帧上,所以这显然有点不客气。这也很糟糕,因为它不限于实际的布局元素,仅基于已知高度/其他元素的填充进行隐蔽的静态计算,并且显然与AutoLayout的用途有所抵触。
很明显,我可以根据我的动态标签创建新的约束,但这要尝试折叠一些空白,这需要大量的微观管理和冗长的工作。有更好的方法吗?更改帧大小0,0并让AutoLayout无需约束即可操作吗?完全删除视图?
坦白说,仅从隐藏视图的上下文中修改常量就需要一行代码,并且计算简单。重新创建新的约束 constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:
似乎很繁重。
编辑二月2018:看到本的答案与UIStackView
s