Установка высоты UITableViewCell стоит дорого - PullRequest
1 голос
/ 27 мая 2010

Я делаю сравнение в

- (CGFloat)tableView:(UITableView *)tblView heightForRowAtIndexPath:(NSIndexPath *)indexPath

Кажется, что производительность моего приложения действительно замедляется, когда я проверяю, cell.detailTextLabel.text isEqualTo:@"None";

Как лучше сравнить и установить высоту ячейки?

Ответы [ 2 ]

5 голосов
/ 27 мая 2010

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

Лучшей реализацией было бы разделение выделенных ячеек на группы по высоте и повторное использование ячеек в соответствии с их требованиями к высоте. Таким образом, нет необходимости перераспределять буферы, и вы получите ожидаемую производительность от UITableView.

3 голосов
/ 27 мая 2010

heightForRowAtIndexPath используется при создании ячейки, и поэтому не должен обращаться к ячейке. Вместо проверки содержимого ячейки, проверьте тот же источник, который вы использовали бы для установки содержимого ячейки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...