根据最高的子视图按钮自动调整视图高度

时间:2019-06-06 06:59:10

标签: ios autolayout ios-autolayout

enter image description here

我的布局如下。黄色视图是一个buttonsContainerView,它充当3个相等宽度的按钮的容器。所有这三个按钮都是黄色buttonsContainerView的子视图。在屏幕快照中,我给出的所有约束都是基本的,可见的和可理解的,但我仍将在下面进行解释。

  • buttonsContainerView-(黄色视图)以viewController的插图固定在view的{​​{1}}的{​​{1}}的顶部。它的前导和尾随固定到safeArea的前导和尾随。
  • 20-顶部,底部和前导分别固定到view的顶部,底部和前导。尾随固定到Button 1的前导。
  • buttonContainerView-顶部,底部分别固定到Button 2的顶部和底部。前导固定到Button 2尾随。尾随固定到buttonsContainerView的前导。
  • Button 1-顶部,底部和尾部分别固定在Button 3的顶部,底部和尾部。前导固定在Button 3的尾部。
  • 相等的宽度-三个按钮都具有相等的宽度约束。

问题 -这三个按钮中的任何一个都可能动态获得更长的标题,并且根据电话屏幕的各种尺寸,它可能无法容纳在一行中。我希望我的buttonsContainerView的高度根据最高的按钮(即标题最长的按钮,因此具有更高的高度)来调整其高度(在屏幕截图中,Button 2为中心按钮)。就我而言,buttonsContainerView占据了最小按钮的高度(屏幕快照中的按钮1和按钮2)。如何使用AutoLayouts实现此目的?

2 个答案:

答案 0 :(得分:0)

我重新创建了您的设置,但找不到任何问题,这是下图,您可以显示有关此按钮设置的更多信息吗?或尝试删除它们并再次添加:enter image description here

答案 1 :(得分:0)

您可以通过使用下一个算法结合顶部插入约束来实现此目的:
1.在按钮上添加水平约束(左,右,相同宽度)。
2.为所有按钮添加一个垂直居中限制。
3.为所有按钮添加 优先级的顶部插入约束。
4.为所有具有 优先级的按钮添加更大或相等的顶部插图。

主要思想是按钮的垂直插入的优先级较低,自动布局引擎会尽力满足,但是顶部插入的较大或相等将阻止小按钮的垂直插入。

enter image description here

enter image description here