【问题标题】:Hiding the subview in UIStackview in ios在ios的UIStackview中隐藏子视图
【发布时间】:2017-05-31 21:49:49
【问题描述】:

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

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

当我滚动并看到新的单元格时 我在控制台中收到以下消息。应用不会崩溃。

NSLayoutConstraint:0x600000093470 'UISV-canvas-connection' UIStackView:0x7fd4527201b0.top == UILabel:0x7fd452720370'休息日 - 休息和睡眠 ...'.top(活动)

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

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

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

【问题讨论】:

  • 像大多数关于哪种方法更好的问题一样,答案将取决于您的具体情况。你能提供更多细节吗?
  • 谢谢吉姆,我已经在另一个中添加了一个 ParentStackView 和一个 ChildStackview。我需要根据条件隐藏 childstackview。当我将子 stackview 的 isHidden 设置为 true 时,我在 xcode 的控制台日志中收到以下消息。但它不会使应用程序崩溃。我收到此错误无法同时满足约束。以下列表中的至少一个约束可能是您不想要的。将尝试通过打破约束来恢复
  • Jay,继续编辑您的问题并在此处添加该详细信息,然后人们会因为没有任何详细信息而对其投反对票。另外,假设子堆栈视图消失了(您将其隐藏或使用 removeArrangedSubview)。你希望它回来吗?
  • 感谢您帮助我,Jim,:) 这是我的第一个问题,所以学习如何提问,以便社区有所有信息可以回复。不,吉姆,一旦隐藏,我就不需要它回来了。

标签: ios swift swift3 uistackview


【解决方案1】:

要回答您的第一个问题,如果您不需要取消隐藏子视图,最合乎逻辑的做法是使用 removeArrangedSubview(UIView) 将其删除。您可能知道,每当添加、删除、插入或隐藏/取消隐藏视图时,堆栈视图都会自动更新其布局。

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

希望对您有所帮助。

【讨论】:

  • 谢谢吉姆,这有助于使概念清晰。我认为它们是相关的,因为我在实现 stackview 后开始在控制台中看到这些消息。
  • 不客气,杰伊。由于您对这里提出的问题不熟悉(顺便说一句,欢迎您),如果它对您有帮助并且您对此感到满意,请继续将我的答案标记为正确的答案。如果您仍然遇到冲突约束的问题,请发布另一个问题并记住包含重要的细节。这些约束问题可能真的很难解决。
  • 完成!,我已经标记了答案。并且由于图像不在图像视图中而出现约束错误。一旦我修复了约束错误也消失了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-23
  • 2018-03-01
  • 1970-01-01
  • 2021-06-01
  • 2019-05-31
  • 2018-12-16
  • 1970-01-01
相关资源
最近更新 更多