ios - 我应该如何以编程方式更新动态 View 的约束?

标签 ios uiview constraints

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

第一状态:

First state

第二种状态:

Second state

一个选择是将这两个单元格创建为单独的单元格,但我想知道是否有任何“可接受”的方法来制作单个单元格(第一个)并让它以各种状态显示 - 最好没有处理大量程序化状态。

首先,我假设两个标签都必须限制在单元格本身的上边距。如果我不这样做,这两种状态都不可能,对吧?还是有其他方法可以从第一个 View 中获取第二个状态?

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

最佳答案

堆栈 View 可以帮助您解决这个问题。如果您隐藏其中一个排列的 subview ,它们会自动调整其固有大小,因此在上面的示例中,您会将两个标签都放在堆栈 View 中,并使用约束将堆栈 View 固定到单元格。

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

如果您使用的是自动调整单元格大小并且基于堆栈 View 的单元格高度,那么这些单元格也会正确调整它们的高度。

堆栈 View 是一个很好的解决方案,可以解决具有可选 View 需要其他 View 调整其位置的其他复杂问题。

关于ios - 我应该如何以编程方式更新动态 View 的约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46908354/

相关文章:

iOS 10 本地通知不起作用(迁移到 UserNotifications 框架)

iOS:NSDecimalNumber 计算和货币的准确性

iphone - 管理 iPhone 5 和其他屏幕高度差异的最佳方式

ios - React Native iOS Native View 使用适当的 reactTag 发送事件

php - Symfony - 在字段约束类中获取实体对象

ios - iPhone 6 Plus 上 UIButton 周围的边框

java - Android:约束布局中的多个 fragment

ios - 是否可以从其他应用程序启动应用程序

ios - 如何在 XR 手机上调整圆圈大小/修复约束

iOS Swift 如何给透明的 UIView 添加阴影