【问题标题】:iOS UILabel bounding rectangle not sized correctlyiOS UILabel 边界矩形的大小不正确
【发布时间】:2017-11-08 16:18:42
【问题描述】:

我有一个 UILabel(以黄色突出显示),它应用了以下条件。

  • 标签的文本长度可变
  • 字体设置为 40
  • 最小字体大小设置为 20
  • 行数设置为 3

虽然这看起来像是一个重复的问题,但我相信它不是。我遇到的问题是,当文本在缩小到 20 磅后超过可用的 3 行长度时,UILabel 的边界框的大小不正确(即注意文本上方和下方的多余间距)。

最终结果应该是一个没有任何间距的 UILabel。是否有解决方案,同时保持行数设置为 3?

【问题讨论】:

  • 您使用的是自动布局?您的约束可能是问题所在?
  • 可以为您的 UILabel 设置约束吗?
  • @Reinier Melian 不,这不是约束问题。我将代码剥离为一个非常简单的示例,并尝试了不同的约束组合,以确保问题不是来自那里。谢谢。
  • 好的,我自己举个例子试试看会发生什么
  • 当您设置字体大小为 40,最小字体大小为 20 时,这意味着当您更改标签的框架时,字体会自动更改大小以适应文本。如果您更改字体大小,它不会影响UILabel的框架

标签: ios autolayout uilabel


【解决方案1】:

这看起来像一个错误。如果您增加基本字体大小,您会看到空间增加。此外,如果您在运行时检查布局,您会发现要计算的内容大小太大。

我的猜测是,UILabel 使用您的原始字体大小 (40) 来计算 3 行文本的内容大小,并且没有考虑到在截断之前字体大小已经减小。

我摆弄了内容拥抱/压缩优先级,但也无法使其工作。

我发现的唯一解决方法是手动将字体大小设置为 20。这样可以得到你想要的框架。

【讨论】:

  • 谢谢安迪。这也是我的假设,但我想知道是否有以前解决过这个问题的自动布局专家。我怀疑这些要求的组合根本无法实现,我将不得不求助于丢失最小字体大小或将线条设置为 0。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多