У меня есть UITextView с большим количеством текста. Прокрутка в основном плавная на iPhone 4, 5 и 6, но на 6 Plus есть много заиканий. (Я полагаю, это потому, что 6 Plus недостаточно мощный для количества пикселей, которые он должен перемещать). Я замечаю, что как только я прокручиваю область, если я прокручиваю ее назад, прокрутка становится приятной и плавной; раскладка уже выполнена для региона и процессору многого не надо делать. Я хочу, чтобы разметка выполнялась до того, как я попаду в регион. Вот что я пробовал:
textView.layoutManager.ensureLayoutForTextContainer(textView.textContainer)
Кажется, это вообще ничего не делает. Прокрутка по-прежнему не является гладкой при первом проходе по региону, а операторы журнала до и после имеют разницу в 0,00014 секунды. Просто чтобы убедиться, что я действительно получаю правильный текстовый контейнер, я также попробовал:
textView.layoutManager.ensureLayoutForTextContainer(textView.layoutManager.textContainers[0] as NSTextContainer)
Это тоже не имело значения.
Что мне нужно сделать, чтобы принудительно разместить весь текст в текстовом контейнере?
Любая помощь будет принята с благодарностью.
Спасибо.
EDITED TO ADD: Чтобы ответить на вопрос TheCodingArt: я не делаю ничего экзотического с точки зрения менеджера компоновки. Это мой код настройки:
var textStorage = NSTextStorage()
var layoutManager = NSLayoutManager()
textStorage.addLayoutManager(layoutManager)
var textContainer = NSTextContainer(size: textContainerSize)
layoutManager.addTextContainer(textContainer)
textView = UITextView(frame: CGRectMake(0, 0, textViewWidth, textViewHeight), textContainer: textContainer)
textView.showsHorizontalScrollIndicator = false
textView.showsVerticalScrollIndicator = false
textView.backgroundColor = UIColor.clearColor();
textView.editable = false;
textView.selectable = true;
textView.scrollsToTop = false
self.view.addSubview(textView)
Создание экземпляров и добавление текстового контейнера и текстового хранилища я научился делать из первого ответа на этот вопрос: Прокрутка вниз UITextView ошибочна в iOS 7 ... и это немного помогло, но недостаточно для 6 Plus.
Позже я добавляю к нему текст:
textStorage.appendAttributedString(attribStr)