在 ios 中隐藏 UIStackview 中的子视图

Hiding the subview in UIStackview in ios

为了在 UIStackView 中隐藏子视图,是将 isHidden 设置为 true 还是使用 removeArrangedSubview 并从父视图中删除子视图更好 Stackview相反?

我正在使用 Stackview 在 tableView 单元格中排列我的 UIElement。 我目前在里面安排了一个父 StackView 和一个 childStackview。需要根据条件显示或隐藏子视图。当条件变为真时,我将子视图的 isHidden 属性 设置为真。

当我滚动时新单元格变得可见 我在控制台中收到以下消息。该应用程序不会崩溃。

NSLayoutConstraint:0x600000093470 'UISV-canvas-connection' UIStackView:0x7fd4527201b0.top == UILabel:0x7fd452720370'Day Off - Rest and Sleep ...'.top (active)

在 UIViewAlertForUnsatisfiableConstraints 处创建符号断点以在调试器中捕获此问题。 <UIKit/UIView.h> 中列出的 UIView 的 UIConstraintBasedLayoutDebugging 类别中的方法也可能有帮助。 [LayoutConstraints] 无法同时满足约束条件。 可能至少以下列表中的约束之一是您不想要的。
试试这个:

  1. 查看每个约束并尝试找出您不期望的;
  2. 找到添加了一个或多个不需要的约束的代码并修复它。 ( "", "", "", "", "", "", “” )

将尝试通过打破约束来恢复

要回答您的第一个问题,如果您不需要取消隐藏子视图,最合乎逻辑的做法是使用 removeArrangedSubview(UIView) 将其删除。您可能知道,每当添加、删除、插入或 hidden/unhidden.

视图时,堆栈视图将自动更新其布局。

您在控制台中收到的关于约束的警告可能与您现在为子视图实施的任何内容相关,也可能无关。你提到它是因为你认为它可能相关吗?

希望对您有所帮助。