Как абзац определен в 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