16

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

谢谢,罗伯

4

3 回答 3

16

我在 Apple 的 cocoa-dev 邮件列表上得到了 Douglas 的答复:

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

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

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

于 2010-12-12T14:51:24.730 回答
4

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

于 2010-12-13T01:24:34.597 回答
3

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

@"\n\r";

我发现仅使用\n甚至是不一致的行为0x2029(这应该相当于 NSParagraphSeparatorCharacter (未在 iOS 中定义))

NSAttributedString使用和时出现的问题NSParagraphStyle...与使用@“\n”或(0x2029)时一样,除了第一段之外,setParagraphSpacing 被忽略了@"\n\r"...

于 2016-01-09T18:37:25.317 回答