2016-02-09 3 views
0

У меня есть табличный вид с пользовательскими ячейками, и я пытаюсь его оптимизировать, чтобы сделать прокрутку максимально гладкой. Я следил за большинством советов по оптимизации табличного представления, например, используя фиксированные высоты, не используя AutoLayout и т. Д.Как улучшить производительность UILabel в виде таблицы?

Я достиг в очень оптимизированном состоянии, кроме одного. Пользовательская ячейка имеет одно изображение и несколько UILabel s. С одним изображением & 3 ярлыка, производительность отличная. Однако, когда я добавляю 4-й ярлык, я начинаю наблюдать немного дерзко, очень мало, но не так гладко, как раньше.

Я искал сеть и нашел CoreText может помочь в производительности. Есть CoreText в правильном направлении? Есть ли какие-либо другие вещи, которые могут помочь улучшить производительность при использовании в виде таблицы? UILabel?

EDIT:

Я использую только простые функции для UILabel, установив его шрифт, цвет шрифта, текст и numberOfLines.

+0

В состоянии в следующей статье: - UILabels sould имеют свои непрозрачные свойства установлено значение ДА - Использование cell.layer.shouldRasterize = ДА http://stackoverflow.com/questions/3248201/why-is-scrolling- производительность-плохо-для-custom-table-view-cells-have-uisegmented –

+0

@GuyDaher попробовал, но, похоже, не помогает производительности –

+0

в значительной степени гарантированно, что ваша проблема - это не UILabel, а изображения в ваших ячейках. – Rog

ответ

4

Основной текст, вероятно, является окончательным решением для производительности, но даже до того, как я туда попал, мне нравится использовать программу PaintCode для составления содержимого моих ячеек, если они особенно сложны.

Другие вещи, которые вы можете сделать, однако, чтобы ускорить процесс немного, прежде чем вам нужно, чтобы добраться до этой точки:

  1. Все ли расчеты доcellForRow называется. Поэтому любое форматирование чисел, расчет дат и т. Д. Должно быть выполнено и сохранено на вашем объекте модели заранее. Таким образом, вы можете просто подключить их прямо к свойствам ваших ячеек, и они готовы к отображению. Любое дополнительное время, проведенное в cellForRow, замедлит ваш tableview.
  2. Установите все наклейки и виды на непрозрачные. Вам, вероятно, придется устанавливать свой фоновый цвет, когда вы это делаете, но это делает рисование просмотров намного быстрее. Вы можете видеть, какие виды имеют прозрачность, применяя включение «Цветные смещенные слои» из меню отладки для симулятора. Вы хотите, чтобы ваши клетки были полностью зелеными.

enter image description here

+0

Я не задавал ничего о непрозрачности, но я вижу красные области, что странно для меня. Так по умолчанию не непрозрачен для ярлыков и просмотров? Что вы имеете в виду, чтобы сделать их непрозрачными? (какое свойство?) –

+0

Я пробовал все, что знаю, чтобы UILabel был непрозрачным (например, цвет фона альфа до 1 или layer.opaque до 1 и т. д.), я все еще получаю красную область для UILables. Не могли бы вы дать мне знать, как «программно настроить все метки и представления на непрозрачные»? –

+0

Этот вопрос может вам помочь? http://stackoverflow.com/questions/8520434/uiview-opaque-vs-alpha-vs-opacity –

-2

Держите фиктивный текст всех меток по умолчанию. Обновление текста не будет стоить памяти. CoreText довольно дорогой и, вероятно, не предназначен для этого! Я думаю, что фиктивные текстовые трюки должны работать на вас.

Надеюсь, что это сработает.

Смежные вопросы