我应该如何以编程方式更新动态视图的约束?

Sti*_*Sti 0 constraints uiview ios

我想知道更新视图/约束的最佳实践,以获得具有多个可能(可见)子视图的动态视图.在这个简单的例子中,假设我想要一个可能有两个"状态" 的自定义 UITableViewCell,一个带有标题和一个正文标签,另一个只带有正文标签,如下图所示.重要提示:我不是在寻找创建这两种状态的方法,这只是一个例子.我知道有一个常规单元subtitle可以达到这个目的,但我真正的问题是更复杂.

第一州:

第一州

第二州:

第二州

一种选择是创建这两个单元作为独立的单元,但我想看看是否有任何"接受"的方式,使单个细胞(第一个),并让它在各种状态显示-最好是不用处理一个大量的程序化国家.

首先,我假设两个标签都必须限制在细胞本身的顶部边缘.如果我不这样做,两个国家都不可能,对吧?或者是否有另一种方法从第一个视图获得第二个状态?

应该如何设置约束,以及如何在代码中处理它们 - 以实现具有不同布局的单个视图?

jrt*_*ton 5

堆栈视图可以帮助您解决此问题.如果您隐藏其中一个已排列的子视图,它们会自动调整其内在大小,因此在上面的示例中,您将在堆栈视图中同时具有两个标签,并使用约束将堆栈视图固定到单元格.

如果隐藏标题标签,正文文本标签将移动到正确的位置(取决于堆栈视图中的设置).

如果您正在使用自动调整单元格并且您正在从堆栈视图中基于单元格高度,那么单元格也将正确调整其高度.

堆栈视图是解决具有可选视图的复杂问题的一个很好的解决方案,这些视图需要其他视图来调整其位置.