CTLineGetBoundsWithOptions()返回的frame.origin.y值是什么意思?

时间:2013-10-31 14:52:53

标签: core-text

当我这样做时

CGRect lineBounds = CTLineGetBoundsWithOptions(lineRef, 0);

我得到了

(CGRect) lineBounds = origin=(x=0, y=-3.8560002) size=(width=181.31201, height=19.088001)

lineBounds.origin.y指的是什么信息?为什么它是负面的?

与此相反,我得到了相同的高度和宽度 - 我没有得到-3.85的值。

double width = CTLineGetTypographicBounds(lineRef, &ascent, &descent, &leading);
double height = ascent + descent + leading;

那它告诉我什么?

1 个答案:

答案 0 :(得分:3)

遗憾的是,CTLineGetBoundsWithOptions函数没有下降文档,但是, 如头文件所述,此方法返回

  

由类型和选项指定的线的边界,使得坐标原点与线原点重合,而rect原点位于左下角。如果该行无效,则此函数将返回CGRectNull

您应该使用CTFrameGetLineOrigins获取行原点,并将相应的原点附加到获得的边界原点。

另外,请考虑查看CTLineBoundsOptions枚举以过滤不需要的元素