NSStringDrawingOptions的各项含义让我感到困惑

15

iOS7及其以上版本,我们可以使用- (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context来计算字符串的大小,但我对于NSStringDrawingOptions枚举中的注释感到困惑。

NSStringDrawingUsesLineFragmentOrigin

它表示指定的origin是行片段的起始点而不是基线的起始点。但line fragment origin和baseline origin的含义是什么呢?

就像WWDC 2013 Session 220(高级文本布局和Text Kit特效)PDF第95页上所描述的那样。

如果line fragment origin指的是蓝色点,那baseline origin是什么意思呢?

1个回答

19

官方文档中的讨论:

讨论

如果在选项中指定了NSStringDrawingUsesLineFragmentOrigin,则该方法将按需要包装字符串以使其适应。如果字符串太大而无法完全放入矩形中,则该方法会缩放字体或调整字符间距以使字符串适应给定的范围。

如果未在选项中指定NSStringDrawingUsesLineFragmentOrigin,则矩形的原点是唯一行的基线。文本将显示在矩形上方而不是内部。例如,如果您指定从0,0开始的矩形并绘制字符串“juxtaposed”,则只能看到“j”和“p”的下行字母。其他文本将位于矩形的顶边缘。

此方法使用属性字符串中指定的属性绘制行。如果字符串中存在换行符,则这些字符将受到尊重,并导致后续文本被放置在起始点下面的下一行。

特别注意:默认情况下,此方法使用基线原点来呈现字符串,因此它将字符串呈现为单行。要将字符串呈现为多行,请在选项中指定NSStringDrawingUsesLineFragmentOrigin。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接