2015-02-06 67 views
10

迷惑iOS7和更高版本,我们可以使用- (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context来计算字符串大小,但我与NSStringDrawingOptions枚举的评论混淆。NSStringDrawingOptions项意思

NSStringDrawingUsesLineFragmentOrigin

它意味着指定的原点是线片段起源,没有基线原点。但是线段起点和基线起点的意思是什么。

就像WWDC 2013届220(高级文本布局与文字工具包效果)在第95

如果线片段起源意味着蓝点PDF,什么底线原点?

回答

9

From the official documentation

如果NSStringDrawingUsesLineFragmentOrigin在 选项中指定讨论

,它包装的需要,使之适合字符串文本。如果 串太大而无法完全贴合在矩形内, 缩放字体或调整字间距,使串给定的范围内配合 的方法。

如果选择不指定NSStringDrawingUsesLineFragmentOrigin时, 的矩形的原点是唯一行的基线。文字 将显示在矩形的上方,而不是其内部。对于 例如,如果你在0,0指定的矩形起点和绘制 字符串“并列”,只有“J”和“P”的下伸将 看到。文本的其余部分将位于矩形的顶部边缘。

此方法绘制用 归因串本身中指定的属性的行。如果 字符串中存在换行符,则会对这些字符进行处理,并使后续文本为 ,并放置在起点下方的下一行。

特别注意事项此方法通过 默认使用的基线原点上,所以它呈现的字符串作为单行。要在多行中呈现 字符串,请在选项中指定 NSStringDrawingUsesLineFragmentOrigin。