NSAttributedString kCTParagraphStyleSpecifierParagraphSpacing无效

| 当应用kCTParagraphStyleSpecifierParagraphSpacing样式时,它对呈现的文本没有视觉效果。其他属性,例如行距和文本对齐方式,效果很好。我可能做错了什么?
CTTextAlignment theAlignment = kCTRightTextAlignment;
CGFloat paragraphSpacingFloat = 150.0;
CGFloat paragraphSpacingBeforeFloat = 150.0;
CGFloat lineSpacing = CTFontGetLeading(baseFont)*5.0;

CFIndex theNumberOfSettings = 4;
CTParagraphStyleSetting theSettings[4] = {
  { kCTParagraphStyleSpecifierParagraphSpacing, sizeof(CGFloat), &paragraphSpacingFloat },
  { kCTParagraphStyleSpecifierParagraphSpacingBefore, sizeof(CGFloat), &paragraphSpacingBeforeFloat },
  { kCTParagraphStyleSpecifierAlignment, sizeof(CTTextAlignment), &theAlignment },
  { kCTParagraphStyleSpecifierLineSpacing, sizeof(CGFloat), &lineSpacing }
};

CTParagraphStyleRef theParagraphRef = CTParagraphStyleCreate(theSettings, theNumberOfSettings);
[attr addAttribute:(id)kCTParagraphStyleAttributeName value:(id)theParagraphRef range:r];
[attr addAttribute:(id)kCTFontAttributeName value:(id)baseFont range:r];
CFRelease(theParagraphRef);
我使用渲染文本
CTFrameSetter frameSetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attr);
CTFrameRef frame = CTFramesetterCreateFrame(frameSetter, CFRangeMake([[attr string] length], 0), the_drawing_cgrect, NULL);
CTFrameDraw(frame, context);
    
已邀请:
您确定您的字符串具有段落分隔符吗? kCTParagraphStyleSpecifierParagraphSpacing在新行上不起作用。它需要实际的\\ u2029。 尝试使用以下代码用段落分隔符替换所有换行符:
NSArray *paragraphs = [string componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
NSString *text = [items componentsJoinedByString:@\"\\u2029\"];
    
CoreText中的行距和段落对齐对我来说是可行的。     

要回复问题请先登录注册