【问题标题】:Autosizing superview height according to tallest subview button根据最高子视图按钮自动调整超级视图高度
【发布时间】:2019-06-06 06:59:10
【问题描述】:

我有以下布局。黄色视图是一个buttonsContainerView,它充当它所拥有的 3 个等宽按钮的容器。所有三个按钮都是黄色buttonsContainerView 的子视图。我给出的所有约束在屏幕截图中都是基本的、可见的和可以理解的,但我仍然会在下面解释它们。

  • buttonsContainerView - (黄色视图)固定到 viewControllerviewsafeArea 顶部,并插入 20。它的前导和尾随固定到 view 的前导和尾随。
  • Button 1 - 顶部、底部和前导分别固定到 buttonContainerView 的顶部、底部和前导。尾随固定到 Button 2 的前导。
  • Button 2 - 顶部和底部分别固定到 buttonsContainerView 的顶部和底部。前导固定到Button 1 尾随。尾随固定到 Button 3 的前导。
  • Button 3 - 顶部、底部和尾部分别固定到 buttonsContainerView 的顶部、底部和尾部。前导固定到 Button 2 的尾随。
  • 等宽 - 所有三个按钮都被赋予相等的宽度限制。

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

【问题讨论】:

标签: ios autolayout ios-autolayout


【解决方案1】:

我已经重新创建了您的设置,但没有发现任何问题,这是下图,您能否提供有关此按钮设置的更多信息?或者尝试删除它们并重新添加:

【讨论】:

  • 不适合我。尝试删除所有约束并重新添加它们。您能否运行您的代码并确认其工作方式与您的屏幕截图相同吗?
【解决方案2】:

您可以通过使用下一个算法的顶部插入约束组合来实现此目的:
1. 为按钮添加水平约束(左、右、同宽)。
2.为所有按钮添加中心垂直约束。
3. 为所有按钮添加具有 low priority 的顶部插入约束。
4. 为具有hight priority的所有按钮添加更大或相等的顶部插入。

主要思想是按钮垂直插入的低优先级约束,自动布局引擎将尝试满足它,但更大或相等的顶部插入将阻止对小按钮执行此操作。

【讨论】:

    猜你喜欢
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多