Pull to refresh

Comments 10

А вы пробовали посмотреть, как нарисован символ в используемом шрифте? Может быть там ад из 100500 сплайнов?
А есть ли в этой несистемной гарнитуре указанные символы?
Ковырял этот баг в сентябре (ибо такое поведение проявилось только на десятке). Судя по профайлеру корень проблемы в том что размер такого символа считается очень долго. И кстати у меня воспроизводилось и на UILabel с не attributed строкой с Helvetica Neue

Что то типа такого в конечно итоге выходит

— Вообще-то UITextView/UITextField это поля для редактирования текста и они отлавливают обработку нажатий
— Вы используете NSAttributedString. Этот класc используется для вывода текста со стилями.

Попробуйте использовать:
— UILabel с простыми строками NSString
— Можно попробовать через чистый CoreText делать вывод
P.S.
Еще стоит проверить как вы формируете таблицу. Возможно в делегатах таблиц понапихано много всего.
Тестирование стоит проводить на реальном устройстве. Симулятор привязан к железу вашего компа и может давать неверные результаты измерений.
Попробуйте использовать:
— UILabel с простыми строками NSString
Для наших задач необходимо было использование стилей и обычная строка не подходит

— Можно попробовать через чистый CoreText делать вывод
Стоит попробовать

P.S.
Еще стоит проверить как вы формируете таблицу. Возможно в делегатах таблиц понапихано много всего.
В методах делегата для приведенного примера используется только указание высоты для строки. Описанная проблема не связана с вызовом методов делегирования

Тестирование стоит проводить на реальном устройстве. Симулятор привязан к железу вашего компа и может давать неверные результаты измерений.
Тестирование проводилось в том числе и на реальном устройстве и соответствует результатам проведенным на симуляторе
Неправильно было построено предложение, исправил. Речь была о том, что независимо от сущности содержащей текст проблема будет актуальна
Если в вашем кастомном шрифте много глифов возможно проблема в поиске нужного глифа при подготовке текста к рендерингу.
Проверить что именно в этом проблема — замерять сколько времени работает CTLineCreateWithAttributedString с соответствующей строкой.
Если в глиф плохо оптимизирован (дизайнер натыкал 100500 точек) — то тоже может быть проблема в расчетах границ глифа (примерно чекнуть можно юзая CTLineGetImageBounds) + сама прорисовка может быть не быстрая (CTFontDrawGlyphs)…
Столкнулся с резким увеличением потребления ресурсов и медленной загрузкой приложения. После профайлинга заметил, что дело в нестандартных шрифтах, добавленных в проект. После перехода на системные шрифты, приложение стало гораздо быстрее работать.
Насколько знаю опции NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType
работают очень медленно. Лучше использовать стороннюю библиотеку, на подобии TTTAttributedLabel.
Sign up to leave a comment.