Создание приписанных строк в какао
Вы создаете NSAttributedString
объект различными способами:
Можно создать новую строку с
initWithString:
,initWithString:attributes:
, илиinitWithAttributedString:
метод. Эти методы инициализируют приписанную строку с данными, которые Вы предоставляете, как проиллюстрировано в следующем примере:NSFont *font = [NSFont fontWithName:@"Palatino-Roman" size:14.0];
NSDictionary *attrsDictionary =
[NSDictionary dictionaryWithObject:font
forKey:NSFontAttributeName];
NSAttributedString *attrString =
[[NSAttributedString alloc] initWithString:@"strigil"
attributes:attrsDictionary];
Поскольку список атрибутов, предоставленных платформой Набора Приложения, видит раздел Constants в Дополнительной Ссылке Набора Приложения NSAttributedString.
Значения атрибута, присвоенные приписанной строке, становятся свойством той строки и не должны быть изменены “позади приписанной строки” другими объектами. Выполнение так может представить противоречивый внутреннее состояние приписанной строки. Всегда используйте
NSMutableAttributedString
setAttributes:range:
и связанные методы для изменения значений атрибута. Посмотрите Изменение Приписанной Строки для большего количества подробных данных.Можно создать приписанную строку из обогащенного текста (RTF) или обогащенного текста с присоединениями (RTFD) данные с помощью методов инициализации,
initWithRTF:documentAttributes:
,initWithRTFD:documentAttributes:
, иinitWithRTFDFileWrapper:documentAttributes:
, как проиллюстрировано в следующем примере:NSData *rtfData = ...; // assume rtfData is an NSData object containing valid RTF data
NSDictionary *docAttributes;
NSSize paperSize;
NSAttributedString *attrString;
if ((attrString = [[NSAttributedString alloc]
initWithRTF: rtfData documentAttributes: &docAttributes])) {
NSValue *value = [docAttrs objectForKey:@"PaperSize"];
paperSize = [value sizeValue];
// implementation continues...
Можно создать приписанную строку из данных HTML с помощью методов инициализации
initWithHTML:documentAttributes:
иinitWithHTML:baseURL:documentAttributes:
. Методы возвращают текстовые атрибуты, определенные HTML как атрибуты строки. Они возвращают атрибуты уровня документа, определенные HTML, такие как бумага и граничные размеры, в отношенииNSDictionary
объект, как описано в Файлах RTF и Приписанных Строках. Методы переводят HTML, а также возможный в структуры текстовой системы Какао, но Набор Приложения не обеспечивает полный, истинный рендеринг произвольного HTML.Многожильные соображения: Начиная с OS X v10.4,
NSAttributedString
использовал WebKit для всего импорта (но не для экспорта) документов HTML. Поскольку загрузка документа WebKit не ориентирована на многопотоковое исполнение, это не было безопасно использовать на фоновых потоках. Для приложений, соединенных на OS X v10.5 и позже, еслиNSAttributedString
импорт документы HTML о любом, но основном потоке, использование WebKit передается основному потоку черезperformSelectorOnMainThread:withObject:waitUntilDone:
. Это делает работу ориентированной на многопотоковое исполнение, но она требует, чтобы основной поток выполнил цикл выполнения в одном из общих режимов. Это поведение может быть переопределено путем установки значения стандартного пользовательского значения по умолчаниюNSRunWebKitOnAppKitThread
к такжеYES
(для получения нового поведения независимо от связи) илиNO
(для получения старого поведения независимо от связи).