为自动布局设置数字 UILabel 以正确计算内部内容大小



我有一个字体大小为 50 且文本1 UILabel。在运行时,其文本将更改为其他数字。

如果我,比如说,将其居中superview,自动检测的(固有内容大小(高度比实际文本大得多,这是因为它尽量不裁剪其他较低的字符,如g

问题是我知道我不会使用数字以外的其他字符。我也不想为它设置固定高度约束。

UIFont指标包括上升、下降、上限高度、x 高度等......所有这些都决定了字符如何适应容器。这里有一个很好的解释和图表:http://cocoanetics.com/2010/02/understanding-uifont

如果您确实想获取单个字符"字形"的高度(和/或宽度(,则需要使用核心文本。这将包括调用CTFontGetGlyphsForCharacters()CTFontCreatePathForGlyph()以获取"字形路径"(CGPath对象(,此时您可以获取"边界框"以确定确切的大小。

有很多讨论和示例代码...一个好的起点是简单地搜索CTFontCreatePathForGlyph

最新更新