У меня есть uitableview, который загружает довольно большие изображения в каждую ячейку, а высота ячеек зависит от размера изображения. Скорость прокрутки приличная, но иногда может быть прерывистой.
Я нашел эти советы в блоге FieryRobot:
гладкая прокрутка с uitableview
более гладкая прокрутка с возможностью просмотра
Есть ли у кого-нибудь советы по повышению производительности прокрутки uitableview?
Ответы:
UITableViewCell
элементах,drawRect:
если возможно, избегайте подпредставлений любой ценой (или, если вам требуются стандартные функции специальных возможностей, представления содержимогоdrawRect:
)UITableViewCell
слой непрозрачным (то же самое касается представления содержимого, если оно у вас есть)UITableView
примерах / документации.UIImage
секисточник
UITableViewCell
, не используйте перо, вместо этого напишите его в коде. Это намного быстрее, чем загрузка файлов пера.источник
Разработчик Tweetie много писал об этом и имеет код, демонстрирующий, как это было сделано для этого приложения. По сути, он / она выступает за одно настраиваемое представление для каждой ячейки таблицы и отрисовывает его вручную (а не подпросмотр с помощью Interface Builder, среди других вариантов).
быстрая прокрутка в твити-с-uitableview
Кроме того, Apple обновила собственный пример кода для TableView в своих учебных пособиях TableViewSuite (может быть, в ответ на это?)
TableViewSuite
источник
Убийца производительности №1 для прокрутки UITableView - это рисование тени на любом слое представления ячеек, поэтому, если производительность прокрутки имеет значение, не создавайте тени, если только это не замедляет ваш основной поток.
подумал, что это нужно сказать, поскольку ни в одном из принятых ответов не упоминались тени и слои. : +)
источник
Любую проблему с
UITableView
производительностью прокрутки можно решить с помощью методов, уже описанных в других ответах. Однако часто низкая производительность вызвана чем-то изначально ошибочным или повторяющимся.Тот факт, что
UITableView
ячейки используются повторно, и тот факт, что каждой ячейке может потребоваться свое собственное изображение - все вместе делает решение немного сложным. Исходя из того, как это решается в целом, здесь я резюмирую вещи, о которых следует позаботиться:[tableView reloaddata]
cellForRowAtIndexPath
включите код, который установит данные (текст) из правильного объекта модели данных массива.Чтобы избежать проблем, обратитесь к этому руководству по отложенной загрузке изображений в табличном представлении.
источник