UILabel字体是否自动应用leading及boundingRect是否需设置.usesFontLeading
usesFontLeading属性相关问题解答 1. UILabel的字体是否会自动应用字体本身的leading值?
默认情况下会。UILabel的文本渲染底层依赖NSLayoutManager实现,NSLayoutManager的usesFontLeading默认值为true,这个属性的作用就是控制文本布局时是否纳入字体内置的行间距(leading)计算,所以默认配置的UILabel会自动应用字体本身的leading值。
2. 调用boundingRect计算文本尺寸时,是否必须设置usesFontLeading选项?
不是必须设置,该选项的启用需要和你实际使用的文本渲染组件的配置保持对齐:
- 如果你是为默认配置的UILabel计算尺寸,需要开启
usesFontLeading选项,保证计算逻辑和UILabel默认渲染逻辑一致,避免计算高度和实际渲染高度不匹配 - 如果你使用自定义字体时,已经主动修改了UILabel的布局逻辑关闭了leading应用,或是你需要的尺寸不需要包含字体leading,就可以关闭该选项。你遇到的开启选项后计算结果错误的情况,本质就是计算逻辑和实际UILabel的渲染逻辑不一致导致的。
小提示:用
boundingRect计算文本尺寸时,除了usesFontLeading之外,还要保证传入的font、lineBreakMode、maximumNumberOfLines等参数和实际UILabel的配置完全一致,才能得到最准确的结果。
内容的提问来源于stack exchange,提问作者Steven James
相关产品推荐
相关产品推荐

