我在为NSAttributedString中的段落应用正确的顶部和底部间距时遇到了一个小问题。我使用此代码来设置段落属性:
int sf = sizeof(CGFloat);
CTParagraphStyleSetting settings[ParagraphStylesSupported] =
{
{ kCTParagraphStyleSpecifierAlignment, sizeof(QuartzTextAlignment), &style.textAlignment },
{ kCTParagraphStyleSpecifierParagraphSpacingBefore, sf, &marginTop},
{ kCTParagraphStyleSpecifierParagraphSpacing, sf, &marginBot},
{ kCTParagraphStyleSpecifierMinimumLineHeight, sf, &lineHeight},
{ kCTParagraphStyleSpecifierLineSpacing, sf, &lineSpacing},
{ kCTParagraphStyleSpecifierFirstLineHeadIndent, sf, &style.firstLineIndent},
};
CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(settings, ParagraphStylesSupported);
[string addAttribute:(NSString*)kCTParagraphStyleAttributeName value:(id)paragraphStyle range:item.range];
CFRelease(paragraphStyle);
正在按预期应用文本属性。 但是段落对齐几乎没有问题:
Core Text布局引擎将哪个解释为段落指示符? 它是属性字符串中的每个换行符吗?
答案 0 :(得分:2)
在核心文本中,换行符(\n
)结束一个段落。我不认为有办法告诉它使用不同的角色。
如果你连续添加两个换行符,那么核心文本就像你有一个空段落一样,所以它会增加额外的间距。
确保每个段落后只有一个换行符。如果您的段落之间仍有太多空格,则需要为kCTParagraphStyleSpecifierParagraphSpacingBefore
或kCTParagraphStyleSpecifierParagraphSpacing
(或两者)使用较小的值。