之后,我们可以使用- (void)drawWithRect:(CGRect)rect options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context
来计算字符串大小,但我与NSStringDrawingOptions
枚举上的注释混淆了。
NSStringDrawingUsesLineFragmentOrigin
这意味着指定的原点是线段原点,而不是基线原点。但是线段原点和基线原点是什么意思呢?
就像第95页上的WWDC 2013 Session 220 (高级文本布局和文本效果工具包) PDF一样。
如果线段原点表示蓝点,那么基线原点是什么?
发布于 2015-02-06 17:55:13
From the official documentation
讨论
如果在options中指定了NSStringDrawingUsesLineFragmentOrigin,则它会根据需要对字符串文本进行换行以使其适合。如果字符串太大,无法完全放入矩形内,则该方法将缩放字体或调整字母间距,以使字符串适合给定的边界。
如果未在选项中指定NSStringDrawingUsesLineFragmentOrigin,则矩形的原点为唯一直线的基线。文本将显示在矩形上方,而不是矩形内部。例如,如果您指定一个从0,0开始的矩形,并绘制字符串‘’,则只会看到‘j’和‘p’的下级。文本的其余部分将位于矩形的顶部边缘。
此方法使用属性化字符串本身中指定的属性来绘制线条。如果字符串中存在换行符,则接受这些字符,并将后续文本放在起始点下的下一行上。
特殊注意事项此方法默认情况下使用基线原点,因此它将字符串呈现为单行。要在多行中呈现字符串,请在options.中指定NSStringDrawingUsesLineFragmentOrigin
https://stackoverflow.com/questions/28362844
复制相似问题