由NSStringDrawingOptions项目含义混淆

yuy*_*han 11 nsstring nsattributedstring ios textkit

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

NSStringDrawingUsesLineFragmentOrigin

它表示指定的原点是线段碎片原点,而不是基线原点.但是线条片段起源和基线起源的含义是什么.

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

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

Lef*_*ris 12

从官方文档

讨论

如果在选项中指定了NSStringDrawingUsesLineFragmentOrigin,它会根据需要包装字符串文本以使其适合.如果字符串太大而无法完全适合矩形,则该方法会缩放字体或调整字母间距以使字符串适合给定的边界.

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

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

特殊注意事项此方法默认使用基线原点,因此它将字符串呈现为单行.要以多行呈现字符串,请在选项中指定NSStringDrawingUsesLineFragmentOrigin.