如何使控件占据堆栈中的实际大小
How to make controls occupy the real size inside a stack
我有一个包含三个控件的水平堆栈。
前两个(下图中的绿色和橙色)基于IB_DESIGNABLE
UIView
类。这些 类 中没有 width
相对于这些控件必须具有的宽度的限制。第三个视图是常规 UIView
.
这些控件有多个按钮。按钮代表配置值。它们是单选按钮,用于让用户select在多个之间进行特定配置。因为这些按钮被多次使用,一个特定的配置可能只有 4 个选项可供选择,所以我必须隐藏 3 个按钮,在其他情况下 2 个等等。
这些 IB_DESIGNABLE
类 是基于 XIB
的。按钮位于这些 XIB
内的水平堆栈内。
这就是问题所在。假设我必须在绿色按钮上隐藏 2 个按钮。因为两者都在一个水平堆栈中并且它们的按钮也在一个水平堆栈中,所以当我从每个按钮中隐藏一个或多个按钮时,我希望控件减小其宽度。
在那种情况下,通过隐藏绿色按钮中的 2 个按钮,我希望整个按钮呈现为
但事实并非如此。它呈现为
注意:当控件收缩时,我需要第三个视图来占据剩余的 space。我使用那个视图强制控件向左移动,因为我无法仅使用堆栈来做到这一点,它总是试图扩展整个东西。
None 这 3 个视图有限制。
XIB
中的按钮具有水平宽度限制,但它们使用的优先级为 750 而不是 1000。
放置控件的堆栈是水平的,填充,填充,间距 20。
xib里面放按钮的stack是horizontal, fill, fill, spacing 0.
有什么想法吗?
如何隐藏按钮?通过 isHidden=true?那么就是这个原因。自动布局忽略隐藏状态。按钮仍然在那里。您也必须 deactivate/change 按钮的约束。例如将按钮的宽度约束设置为 0.
我有一个包含三个控件的水平堆栈。
前两个(下图中的绿色和橙色)基于IB_DESIGNABLE
UIView
类。这些 类 中没有 width
相对于这些控件必须具有的宽度的限制。第三个视图是常规 UIView
.
这些控件有多个按钮。按钮代表配置值。它们是单选按钮,用于让用户select在多个之间进行特定配置。因为这些按钮被多次使用,一个特定的配置可能只有 4 个选项可供选择,所以我必须隐藏 3 个按钮,在其他情况下 2 个等等。
这些 IB_DESIGNABLE
类 是基于 XIB
的。按钮位于这些 XIB
内的水平堆栈内。
这就是问题所在。假设我必须在绿色按钮上隐藏 2 个按钮。因为两者都在一个水平堆栈中并且它们的按钮也在一个水平堆栈中,所以当我从每个按钮中隐藏一个或多个按钮时,我希望控件减小其宽度。
在那种情况下,通过隐藏绿色按钮中的 2 个按钮,我希望整个按钮呈现为
但事实并非如此。它呈现为
注意:当控件收缩时,我需要第三个视图来占据剩余的 space。我使用那个视图强制控件向左移动,因为我无法仅使用堆栈来做到这一点,它总是试图扩展整个东西。
None 这 3 个视图有限制。
XIB
中的按钮具有水平宽度限制,但它们使用的优先级为 750 而不是 1000。
放置控件的堆栈是水平的,填充,填充,间距 20。 xib里面放按钮的stack是horizontal, fill, fill, spacing 0.
有什么想法吗?
如何隐藏按钮?通过 isHidden=true?那么就是这个原因。自动布局忽略隐藏状态。按钮仍然在那里。您也必须 deactivate/change 按钮的约束。例如将按钮的宽度约束设置为 0.