Как абзац определен в NSAttributedString?

Я вижу, что есть имя атрибута (NSParagraphStyleAttributeName) для применения стилей абзаца к тексту в Cocoa. Текст хранится в NSAttributedString, но что определяет "абзац" в этой строке - это символ новой строки \n? Другие персонажи? Если это a \n, то как вы создаете новую строку без запуска нового абзаца. И, наконец, когда вы присоединяете ParagraphStyle к строке, вам нужно использовать точный диапазон всего абзаца или вы можете поместить его в любой поддиапазон в абзаце. Если это может быть поддиапазон, то как система обрабатывает два или более элемента ParagraphStyles в одном и том же абзаце?

спасибо, Rob

Ответ 1

Я получил ответ от Дугласа в Apple cocoa -dev список рассылки:

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

Я скопирую то, что он написал здесь:

Можно использовать любой из стандартных разделителей абзацев (\n,\r,\r\n, разделитель абзацев Unicode). Используйте разделитель строк Unicode, чтобы начать новую строку без перерыва абзаца. Лучше всего применять стиль абзаца для всего абзаца; если это не будет сделано, атрибут стиля абзаца будет автоматически исправлен при времени фиксации атрибута, чтобы он был постоянным в каждом диапазоне абзацев, потому что это необходимо во время компоновки.

Ответ 2

Возможно, стоит упомянуть, что в руководстве по программированию Apple String имеется раздел о параграфах и разрывах строк и что NSString предоставит вам диапазоны абзацев без необходимости поиска разделителей абзацев.

Ответ 3

лучший способ в iOS по моему опыту - использовать

@"\n\r";

я нашел непоследовательное поведение только при использовании \n или даже 0x2029 (что должно быть эквивалентно NSParagraphSeparatorCharacter (не определено в iOS))

возникли проблемы при использовании NSAttributedString и NSParagraphStyle... как при использовании @ "\n" или (0x2029) setParagraphSpacing был проигнорирован другим, чем первый абзац... используя @"\n\r" получил paragraphes right