Как абзац определяется в NSAttributedString?

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

спасибо роб

3 ответа

Решение

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

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

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

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

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

Из моего опыта лучше всего использовать iOS

@"\n\r";

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

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

Другие вопросы по тегам