【问题标题】:UILabel adds unnecessary top and bottom padding when growing vertically and breaking linesUILabel 在垂直增长和断线时添加了不必要的顶部和底部填充
【发布时间】:2015-10-30 22:11:45
【问题描述】:

假设我们有一个UILabel,它从四面八方固定到它的超级视图。 Lines 的数量设置为 0(因此我们可以显示多行字符串),我们使用 Truncate Tails 策略进行换行。

如果我们有一个单行短文本,它不会换行,标签的内部填充/插入看起来很好:

当使用多行文字时,这将强制标签开始换行,省略号出现在标签的末尾,但人工填充/插入被添加到顶部/标签的底部也是如此。标签垂直膨胀,即使它仍然只显示 1 行文本:

约束:

换行:

我已经尝试过了

将水平轴和垂直轴的 Content Hugging Priority 更改为 1000,因此 UILabel 的增长不会超过要求,但这并不能解决问题。

在不同的Line Breaks 策略(剪辑、字符换行、截断等)之间切换也不能解决问题。

我能够在 Xcode 6Xcode 7 beta、Interface Builder 以及运行应用程序时重现此行为。

【问题讨论】:

  • 您是否尝试调用 [YourLabel sizeToFit]?
  • @Walucas:是的,我试过了,但没有成功。这个问题出现在 Interface Builder 和正在运行的应用程序中。
  • 您是否尝试在代码中设置preferredMaxLayoutWidth?您可以将其设置为适合您的边距的self.frame.size.width - 2*8
  • @CandostDagdeviren 谢谢,但也没有运气
  • 您是否更改了视图框架?因为你的底部空间限制应该大于 20,它会阻止你的 UILabel 在垂直方向上变大。

标签: ios autolayout interface-builder uilabel


【解决方案1】:

看起来修复无意填充的唯一方法是将Lines 设置为常量(例如3)。 UILabel 仍将动态增长,并且不会添加任何填充。

【讨论】:

    【解决方案2】:

    取消选中界面生成器中的“显式”复选框以获取所需的标签宽度为我解决了这个问题。

    【讨论】:

      【解决方案3】:

      我在界面生成器中看到它时遇到了同样的问题。但是如果我只是运行它,模拟器中的最终结果可以在没有任何填充的情况下工作。 关键是你必须设置标签的backgroundColor 属性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-15
        • 2016-08-08
        • 2020-10-24
        • 1970-01-01
        • 2015-01-11
        • 2019-11-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多