iOS7及更高版本,我们可以使用- (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context
来计算字符串大小,但我对NSStringDrawingOptions
枚举的评论感到困惑。
NSStringDrawingUsesLineFragmentOrigin
这意味着指定的原点是线段片段原点,而不是基线原点。但是线条片段起源和基线起源的含义是什么。
就像第95页上的WWDC 2013会话220(高级文本布局和带文本工具包的效果)PDF。
如果线段碎片原点是指蓝点,那么基线来源是什么?
答案 0 :(得分:12)
From the official documentation
讨论
如果指定 NSStringDrawingUsesLineFragmentOrigin 选项,它根据需要包装字符串文本以使其适合。如果 字符串太大,无法完全适合矩形,方法 缩放字体或调整字母间距以使字符串适合 在给定范围内。
如果未在选项中指定 NSStringDrawingUsesLineFragmentOrigin , 矩形的原点是唯一线的基线。文本 将显示在矩形上方而不是内部。对于 例如,如果指定一个从0,0开始的矩形并绘制 字符串'juxtaposed',只有'j'和'p'的下降符号 看到。文本的其余部分将位于矩形的顶部边缘。
此方法使用中指定的属性绘制线条 属于字符串本身。如果换行符存在于 字符串,这些字符被尊重并导致后续文本 放在起点下面的下一行。
特殊注意事项此方法使用基线原点 默认,因此它将字符串呈现为单行。渲染 多行的字符串,指定 选项中的NSStringDrawingUsesLineFragmentOrigin。