【问题标题】:Make UILabel height so it fits the characters it contains exactly (with autolayout)使 UILabel 高度适合它包含的字符(使用自动布局)
【发布时间】:2016-03-07 11:13:37
【问题描述】:

我发现UILabel 固有大小似乎不完全适合它包含的字符。

正如您在图片中看到的,标签在顶部和底部都有一些边距。我可以使用基线 (title.baseline == subtitle.top) 使“字幕”更接近“标题”,但我也想将“标题”与其父顶部对齐。

如果可能,我想使用自动布局约束。

【问题讨论】:

  • 字体有小写字母下降到低于基线。内在尺寸允许这样做。
  • 是的,我知道。我想要一个带有我正在使用的字符的“当前”内在大小,而不是任何可能的字符。由于我在那里使用大写字母,我知道我不会有小写的下降。
  • 我在这里发布了一个解决方案:stackoverflow.com/a/34073666/1121497

标签: ios autolayout alignment uilabel


【解决方案1】:

快速修复

如果您的标签字体大小是恒定的,您可以尝试子类化UILabel 并覆盖- (CGSize)intrinsicContentSize

-(CGSize)intrinsicContentSize {
    CGSize intrinsicSize = [super intrinsicContentSize];
    intrinsicSize.height -= 8; // Works good for system font size 17.0
    return intrinsicSize;
}

您可能需要使用intrinsicSize.height -= 8; 来获得所需的输出。

【讨论】:

  • 谢谢。我想过这样做。不过,这确实是一个 hack... :p --- 我希望它适用于任何字体、大小和字符。我将不得不考虑所有这些并“烹饪”一个神奇的数字。
猜你喜欢
  • 2016-11-13
  • 1970-01-01
  • 2014-01-11
  • 1970-01-01
  • 2014-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多