我的1
字体大小为50,文字为superview
。在运行时,其文本将更改为其他数字。
如果我将其置于g
中心,则自动检测到的(内在内容大小)高度比实际文本高很多,这是因为它尝试不裁剪其他较低的字符,如{ {1}}。
问题是我知道我不会使用除数字之外的其他字符。我也不想为它设置固定的高度约束。
答案 0 :(得分:1)
UIFont
指标包括ascender,descender,cap height,x height等...所有指标都决定了字符如何适合容器。这里有一个很好的解释和图表:http://cocoanetics.com/2010/02/understanding-uifont
如果你真的想得到单个角色的高度(和/或宽度)"字形"您需要使用Core Text。这将包括调用CTFontGetGlyphsForCharacters()
和CTFontCreatePathForGlyph()
以获取"字形路径" (一个CGPath
对象),此时你可以获得"边界框"确定确切的大小。
很多讨论和示例代码......一个好的起点就是搜索CTFontCreatePathForGlyph