【问题标题】:How to make controls occupy the real size inside a stack如何使控件占据堆栈内的实际大小
【发布时间】:2017-04-16 21:00:09
【问题描述】:

我有一个包含三个控件的水平堆栈。

前两个(下图中的绿色和橙色)基于 IB_DESIGNABLE UIView 类。这些类中没有width 约束相对于这些控件必须的宽度。第三个视图是普通的UIView

这些控件有多个按钮。这些按钮代表配置的值。它们是用于让用户在多个配置之间选择特定配置的单选按钮。因为这些按钮被多次使用,一个特定的配置可能只有 4 个选项可供选择,所以我必须隐藏 3 个按钮,在其他情况下是 2 个等一个。

这些IB_DESIGNABLE 类基于XIBs。按钮位于这些XIBs 内的水平堆栈内。

这就是问题所在。假设我必须在绿色按钮上隐藏 2 个按钮。因为两者都在水平堆栈中,并且它们的按钮也在水平堆栈中,所以当我从每个按钮中隐藏一个或多个按钮时,我希望控件减小其宽度。

在这种情况下,通过隐藏绿色按钮的 2 个按钮,我希望将整个内容呈现为

但事实并非如此。它呈现为

注意:当控件收缩时,我需要第三个视图来占据剩余空间。我使用该视图将控件强制向左,因为我无法仅使用堆栈来做到这一点,而堆栈总是试图扩展整个事物。

这三个视图都没有约束。

XIB 内的按钮具有水平宽度约束,但它们使用的优先级为 750 而不是 1000。

存放控件的栈是水平的,填充,填充,间距 20。 保存xib内部按钮的堆栈是水平的,填充,填充,间距0。

有什么想法吗?

【问题讨论】:

    标签: ios uiview xib uistackview ibdesignable


    【解决方案1】:

    如何隐藏按钮?通过 isHidden=true?那么这就是原因。自动布局忽略隐藏状态。按钮还在。您也必须停用/更改按钮的约束。例如将按钮的宽度约束设置为 0。

    【讨论】:

      猜你喜欢
      • 2011-08-01
      • 2020-02-25
      • 2016-08-13
      • 2012-09-09
      • 1970-01-01
      • 2010-10-29
      • 2018-01-29
      • 2019-11-16
      • 1970-01-01
      相关资源
      最近更新 更多