Почему на iPhone нет NSAttributedString?
-
05-09-2019 - |
Вопрос
Кто-нибудь знает, что заставило Apple отказаться от NSAttributedString при превращении AppKit в UIKit?
Причина, по которой я спрашиваю, заключается в том, что мне бы очень хотелось использовать его в своем приложении для iPhone, и, похоже, нет никакой замены или альтернативы, чем сделать это самому...
В строке можно использовать смешанные атрибуты шрифта — это просто чертовски много работы, чтобы добиться чего-то подобного, что было возможно с помощью нескольких строк кода с NSAttributedString.
Кроме того, выполнение всего этого дополнительного кода рисования самостоятельно делает ячейки табличного представления очень тяжелыми и серьезно снижает производительность.
У кого-нибудь есть идеи?Кто-нибудь из гениев работает над альтернативой NSAttributedString с открытым исходным кодом?
Решение
NSAttributedString теперь доступен на iPhone начиная с бета-версии 4.0.
Другие советы
Текущий рекомендуемый в документации способ сделать это — использовать UIWebView.
Не знаю, актуально ли это для вас, но Джо Хьюитт опубликовал свою три20 тем временем библиотека, которая содержит TTStyledText
и TTStyledTextLabel
чтобы соответствовать вашим потребностям.
Боюсь, вам придется катиться самостоятельно.Если вы увязли при рисовании таблиц, я бы, вероятно, переключился на необработанные вызовы Quartz;попробуйте сбросить все ваши рисунки в одно представление и выполнить в нем все сложные строковые рисунки.NSAttributedString удобен, но я не думаю, что он использует столько специального AppKit-mojo, чтобы добиться гораздо большей производительности, чем вызовы прямого рисования строк.
Ответ выше указывает, что NSAttributedString доступен в OS 4.0 и выше, но согласно документации он доступен в версии 3.2:
Справочник класса NSAttributedString
Наследует от НСОбъект
Соответствует NSCoding, NSCopying, NSmutableCopying, NSObject (NSObject)
Рамки /Система/Библиотека/Frameworks/Foundation.framework
Доступность Доступно в iPhone OS 3.2 и более поздних версиях.
Сопутствующее руководство Руководство по программированию атрибутных строк
Объявлено в НСАтрибутедстринг.х
Другой подход — использовать UIWebView с HTML.Или, если вы осмелились, вы можете использовать недокументированный метод setHTML в UITextView для установки небольших фрагментов форматированного текста...
Мне кажется, это больше похоже на будущее поддержки форматированного текста, на некий способ использовать Webkit для вывода форматированных строк.