Я вижу некоторые проблемы с производительностью с Core Text, когда он запускается на оригинальном iPad.
Я создал редактируемый вид, используя Core Text и протокол UITextInput
, основанный на OmniGroup OUIEditableFrame
.
Когда в представлении имеется достаточное количество текста, скажем 180 строк, ввод/ввод значительно отстает, а одно нажатие на клавишу обычно занимает 1-2 секунды.
Используя инструменты с симулятором, я смог сузить проблему и узнать, что было так много времени. Оказывается, потому что я перерисовываю кадр с каждым нажатием клавиши, то, что занимает так много времени, вызывает CTFramesetterCreateWithAttributedString
и CTFramesetterCreateFrame
.
Мне нужно перерисовать с каждым штрихом клавиши, чтобы текст обновлялся, это означает вызов CTFramesetterCreateWithAttributedString
и CTFramesetterCreateFrame
.
Кто-нибудь еще сталкивается с этой проблемой, и если да, то как они обошли это?
EDIT:
Дальнейшее исследование и выяснилось, что если атрибутная строка не имеет атрибутов, то все становится намного быстрее и без какого-либо отставания. Изменение стиля шрифта, цвета или абзацев замедляет его. Любая идея, если это может иметь к этому какое-то отношение?