Kev*_*gan 6 objective-c core-text ios
应用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), ¶graphSpacingFloat },
{ kCTParagraphStyleSpecifierParagraphSpacingBefore, sizeof(CGFloat), ¶graphSpacingBeforeFloat },
{ 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);
Run Code Online (Sandbox Code Playgroud)
我使用渲染文本
CTFrameSetter frameSetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attr);
CTFrameRef frame = CTFramesetterCreateFrame(frameSetter, CFRangeMake([[attr string] length], 0), the_drawing_cgrect, NULL);
CTFrameDraw(frame, context);
Run Code Online (Sandbox Code Playgroud)
您确定您的字符串有段落分隔符吗?kCTParagraphStyleSpecifierParagraphSpacing 不适用于新行。它需要实际的\u2029。
尝试使用以下代码将所有换行符替换为段落分隔符:
NSArray *paragraphs = [string componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];
NSString *text = [items componentsJoinedByString:@"\u2029"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3689 次 |
| 最近记录: |