Любой рисунок, который ячейка таблицы должна выполнять во время прокрутки, вызовет проблемы с производительностью;когда у вас много подпредставлений, обычно происходит много рисования, и это, как вы заметили, сделает прокрутку довольно изменчивой.Есть несколько способов уменьшить это.
Первый шаг - убедиться, что для ваших ячеек и как можно большего числа их подпредставлений свойства opaque
установлены на YES
.,Непрозрачные представления не должны смешиваться с содержимым под ними, и это экономит много времени.
Возможно, вы также захотите настроить слои своих ячеек для их растеризации, например:
cell.layer.shouldRasterize = YES;
cell.layer.rasterizationScale = [UIScreen mainScreen].scale;
Это сведет вашу иерархию представлений в одно плоское растровое изображение, и именно это Core Animation просто любит рисовать.Обратите внимание, что любые анимационные представления - например, индикаторы активности - будут заставлять это растровое изображение обновляться каждый раз, когда они меняются, то есть много.В этом случае вы не захотите, чтобы ячейка растеризировала все;вы можете просто использовать подпредставление со всеми вашими относительно статичными представлениями (например, надписями) под другим подпредставлением с любым таким динамическим содержимым, и иметь только первое из них растеризованных.