Ios 定义核心文本段落而不使用换行符?
在NSAttributedString中为段落应用适当的顶部和底部间距时,我遇到了一个小问题。我使用此代码设置段落属性:Ios 定义核心文本段落而不使用换行符?,ios,iphone,core-text,paragraph,Ios,Iphone,Core Text,Paragraph,在NSAttributedString中为段落应用适当的顶部和底部间距时,我遇到了一个小问题。我使用此代码设置段落属性: int sf = sizeof(CGFloat); CTParagraphStyleSetting settings[ParagraphStylesSupported] = { { kCTParagraphStyleSpecifierAlignment, sizeof(QuartzTextAlignme
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);
正在按预期应用文本属性。
但段落对齐几乎没有问题:
是属性字符串中的每个换行符吗?在核心文本中,换行符(
\n
)以段落结尾。我认为没有办法告诉它使用不同的字符
如果您在一行中放置两个换行符,那么核心文本的作用就像您有一个空段落一样,因此它将增加额外的间距
确保每个段落后只有一个换行符。如果段落之间的间距仍然过大,则需要在或kctragraphstylespecifierparagraphspacingbefore或
kctraphstylespecifierparagraphspacing
(或两者兼有)。似乎是正确的。我的另一个问题是:为什么kCTParagraphStyleSpecifierParagraphSpacingBefore对NSAttributedString的第一段不起作用?