【问题标题】:Dynamic height for a horizontal UIStackview水平 UIStackview 的动态高度
【发布时间】:2018-06-07 20:09:43
【问题描述】:

我有一个水平 StackView,其分布为“平均填充”。它有 3 个标签。 我希望其中一个标签具有动态高度。 当我将该标签的行数设置为 0 时,它最终会在运行时打破间距约束。

所有这些水平堆栈视图构成一个垂直堆栈视图。 我尝试为多行标签设置较低的垂直拥抱优先级和较高的阻力优先级

它在 XIB 中的行为也是这样的

更改行数之前

改变行数后

【问题讨论】:

  • 必须设置内容压缩阻力和拥抱优先级?
  • 想要的输出? imgur.com/a/tWi2M
  • 是的,我需要相同的输出。

标签: ios xib uistackview


【解决方案1】:

不直接回答问题,而是关于如何控制 UIStackView 的动态高度。

  1. 垂直堆栈视图。使其不受高度限制,例如没有底部限制或没有高度限制。
  2. 内容(如视图)的高度是固定的。
  3. UIStackView 的对齐和分布都将“填充”

现在显示或隐藏内容,然后 Stactview 高度将动态变化。

【讨论】:

    【解决方案2】:

    您无需设置 Content Hugging 和 Compression 阻力属性即可实现该效果。

    1. 水平堆栈视图:设置对齐“填充”和分布“均等填充”

    2. 垂直堆栈视图:设置对齐“填充”和分布“填充”

    3. 将标签线设置为 0。

    4. 为垂直堆栈视图设置顶部、底部、前导约束。

    【讨论】:

    • Xcode 行为异常,当我将 line 设置为 0 时,我的 Stack 视图隐藏了。不要担心运行时会显示正确的输出。
    • 没错,同样的事情发生在我身上,(Xib 空白),我做了和你提到的一样的事情,因为你就是这样做的。 :p 这是显而易见的方法。无论如何,我会重新尝试,如果它按预期工作,我会支持你的答案或写另一个答案。
    • 最好以编程方式设置 Lines = 0 :)
    • 不起作用,基本上,整个东西都在一个单元格中,我希望该单元格自动调整大小,但它所做的一切都会缩小并破坏 UI。
    • TableViewCell。我最终使用了 UIViews 的垂直堆栈视图,将水平堆栈视图替换为由标签组成的 UIView。
    【解决方案3】:

    为 UIStackView 设置所有约束。 根据 UILabel 文字高度更新 UIStackview 高度约束常量值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 2019-01-26
      • 2017-01-19
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      相关资源
      最近更新 更多