【问题标题】:how to remove a view from stackview and distribute the other fillequally如何从stackview中删除一个视图并均匀分配另一个视图
【发布时间】:2017-10-31 20:39:07
【问题描述】:

我在情节提要中有一个 stackview 设计,里面有 5 个视图,由 1 个按钮、一个带标签的小视图和一个按钮组成。像这样。

我想要的是删除其中一个视图,比如说带有橙色背景的视图。 我在 viewdidload 上试过这个

stackview.view2.isHiden = true
stackview.view2.removeFromSuperview()

这会删除视图和所有元素,但剩余部分不会按预期分发任何想法如何实现这一点

【问题讨论】:

  • 预期结果是什么?我猜您希望其他项目占用所有可用空间并彼此相等。您是否尝试将堆栈视图的 Distribution 属性设置为“Fill Equally”?
  • 这是预期的行为,但结果不是我所期望的那样,一个视图变得更宽,并且保持相同的大小但不是填充质量
  • 您是否尝试过类似stackView.setNeedsLayout() 和/或stackView.layoutIfNeeded 的操作?顺便说一句,如果你 removeFromSuperView 无论如何你都不需要隐藏。无论如何,您可以在删除视图后分享错误布局的屏幕截图吗?也许您没有为情节提要中的堆栈视图设置适当的约束和设置。

标签: swift io uistackview


【解决方案1】:
// Appears to remove the first arranged view from the stack.
// The view is still inside the stack, it's just no longer visible, and no longer contributes to the layout.

let firstView = stackView.arrangedSubviews[0]
firstView.isHidden = true

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-26
    • 2015-11-23
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 2015-11-27
    • 2012-10-16
    • 1970-01-01
    相关资源
    最近更新 更多