You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术咨询:`NSLayoutManager.lineFragmentRect`与`lineFragmentUsedRect`的差异

NSLayoutManager.lineFragmentRect 与 lineFragmentUsedRect 的区别

核心定义差异

  • lineFragmentRect:代表布局时给当前行片段分配的完整矩形空间,宽度等于文本容器的可用宽度(或当前行的最大允许宽度),高度为该行的标准行高。无论行内内容是否填满,这个矩形的范围是固定的,对应行的整体占位区域。
  • lineFragmentUsedRect:代表当前行片段中实际被内容占据的最小矩形,宽度从行内第一个内容的左边缘延伸到最后一个内容的右边缘,高度覆盖行内所有内容(如字形、嵌入图片)的实际垂直范围。它仅包含行内有内容的部分,而非整个行的占位。

实际场景示例

  • 若一行只有几个短文本字符,lineFragmentRect的宽度会铺满文本容器的可用宽度,而lineFragmentUsedRect的宽度仅覆盖这几个字符的实际宽度。
  • 当行内包含不同字号的文本或嵌入小图片时,lineFragmentUsedRect的高度会适配内容的最大垂直高度,而lineFragmentRect的高度仍为该行的标准行高。

适用场景

  • 使用lineFragmentRect:需要处理整行的布局占位(如给整行添加背景色、计算行与行之间的间距)。
  • 使用lineFragmentUsedRect:需要精准操作行内内容(如给文本内容添加精准背景、检测点击是否命中行内内容、定位行内元素)。

内容的提问来源于stack exchange,提问作者iMoeNya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 13:24:29