如何在NSAttributedString中定义段落?

时间:2010-12-09 23:41:57

标签: cocoa macos nstextview nsattributedstring

我看到有一个属性名称(NSParagraphStyleAttributeName)用于将段落样式应用于Cocoa中的文本。文本存储在NSAttributedString中,但是在该字符串中定义“段落”的内容是 - 换行符\n?其他人物?如果它是\n,那么如何在不启动新段落的情况下创建新行。最后,当您将ParagraphStyle附加到字符串时,是否必须使用整个段落的确切范围,或者可以将其放在段落中的任何子范围内。如果它可以是一个子范围,系统如何处理同一段落上的两个或多个ParagraphStyles?

感谢, 罗布

3 个答案:

答案 0 :(得分:13)

我在Apple的cocoa-dev邮件列表上得到道格拉斯的回答:

http://lists.apple.com/archives/Cocoa-dev/2010/Dec/msg00347.html

我会复制他在这里写的内容:

可以使用任何标准段落分隔符(\ n,\ r,\ r \ n,Unicode段落分隔符)。使用Unicode行分隔符来开始一个没有分段符的新行。最好将段落样式应用于整个段落;如果没有这样做,那么段落样式属性将在属性修复时自动修复,以便它在每个段落范围内保持不变,因为在布局时需要它。

答案 1 :(得分:3)

根据我的经验,iOS中最好的方法是使用

@"\n\r";

我发现只使用\n甚至0x2029的行为不一致(应该等同于NSParagraphSeparatorCharacter(在iOS中未定义))

使用NSAttributedStringNSParagraphStyle时出现的问题...当使用@“\ n”或(0x2029)时,setParagraphSpacing被第一段以外的其他方式忽略...使用{ {1}}得到了正确的表达

答案 2 :(得分:2)

值得一提的是,Apple的字符串编程指南中有一个关于段落和换行符的部分,NSString将为您提供段落范围,而无需搜索段落分隔符。