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

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

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

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

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

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

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

Информация

Дата основания
Местоположение
Россия
Сайт
livetyping.ru
Численность
51–100 человек
Дата регистрации

Блог на Хабре