技术咨询:`NSLayoutManager.lineFragmentRect`与`lineFragmentUsedRect`的差异
NSLayoutManager.lineFragmentRect 与 lineFragmentUsedRect 的区别 核心定义差异
lineFragmentRect:代表布局时给当前行片段分配的完整矩形空间,宽度等于文本容器的可用宽度(或当前行的最大允许宽度),高度为该行的标准行高。无论行内内容是否填满,这个矩形的范围是固定的,对应行的整体占位区域。lineFragmentUsedRect:代表当前行片段中实际被内容占据的最小矩形,宽度从行内第一个内容的左边缘延伸到最后一个内容的右边缘,高度覆盖行内所有内容(如字形、嵌入图片)的实际垂直范围。它仅包含行内有内容的部分,而非整个行的占位。
实际场景示例
- 若一行只有几个短文本字符,
lineFragmentRect的宽度会铺满文本容器的可用宽度,而lineFragmentUsedRect的宽度仅覆盖这几个字符的实际宽度。 - 当行内包含不同字号的文本或嵌入小图片时,
lineFragmentUsedRect的高度会适配内容的最大垂直高度,而lineFragmentRect的高度仍为该行的标准行高。
适用场景
- 使用
lineFragmentRect:需要处理整行的布局占位(如给整行添加背景色、计算行与行之间的间距)。 - 使用
lineFragmentUsedRect:需要精准操作行内内容(如给文本内容添加精准背景、检测点击是否命中行内内容、定位行内元素)。
内容的提问来源于stack exchange,提问作者iMoeNya
相关产品推荐
相关产品推荐

