由NSStringDrawingOptions项目含义混淆

时间:2015-02-06 09:47:16

标签: ios nsstring nsattributedstring textkit

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

NSStringDrawingUsesLineFragmentOrigin

这意味着指定的原点是线段片段原点,而不是基线原点。但是线条片段起源和基线起源的含义是什么。

就像第95页上的WWDC 2013会话220(高级文本布局和带文本工具包的效果)PDF。

如果线段碎片原点是指蓝点,那么基线来源是什么?

1 个答案:

答案 0 :(得分:12)

From the official documentation

  

讨论

     

如果指定 NSStringDrawingUsesLineFragmentOrigin   选项,它根据需要包装字符串文本以使其适合。如果   字符串太大,无法完全适合矩形,方法   缩放字体或调整字母间距以使字符串适合   在给定范围内。

     

如果未在选项中指定 NSStringDrawingUsesLineFragmentOrigin ,   矩形的原点是唯一线的基线。文本   将显示在矩形上方而不是内部。对于   例如,如果指定一个从0,0开始的矩形并绘制   字符串'juxtaposed',只有'j'和'p'的下降符号   看到。文本的其余部分将位于矩形的顶部边缘。

     

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

     

特殊注意事项此方法使用基线原点   默认,因此它将字符串呈现为单行。渲染   多行的字符串,指定   选项中的NSStringDrawingUsesLineFragmentOrigin。