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

时间:2017-05-10 12:01:25

标签: ios autolayout uilabel

我的1字体大小为50,文字为superview。在运行时,其文本将更改为其他数字。

如果我将其置于g中心,则自动检测到的(内在内容大小)高度比实际文本高很多,这是因为它尝试不裁剪其他较低的字符,如{ {1}}。

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

1 个答案:

答案 0 :(得分:1)

UIFont指标包括ascender,descender,cap height,x height等...所有指标都决定了字符如何适合容器。这里有一个很好的解释和图表:http://cocoanetics.com/2010/02/understanding-uifont

如果你真的想得到单个角色的高度(和/或宽度)"字形"您需要使用Core Text。这将包括调用CTFontGetGlyphsForCharacters()CTFontCreatePathForGlyph()以获取"字形路径" (一个CGPath对象),此时你可以获得"边界框"确定确切的大小。

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