Оптимизация заголовков для UITableView? - PullRequest
1 голос
/ 17 мая 2010

У меня есть проблема оптимизации для заголовков таблицы с простым стилем. Если я использую стандартное представление для таблицы (классический серый с заголовками, установленными titleForHeaderInSection :), то все в порядке, а прокрутка плавная и немедленная.

Когда вместо этого используйте этот код, чтобы установить мое личное представление:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

    return [self headerPerTitolo:[titoliSezioni objectAtIndex:section]];
}

- (UIImageView *)headerPerTitolo:(NSString *)titolo {

    UIImageView *headerView = [[[UIImageView alloc] initWithFrame:CGRectMake(10.0, 0.0, 320.0, 44.0)] autorelease];
    headerView.image = [UIImage imageNamed:kNomeImmagineHeader];
    headerView.alpha = kAlphaSezioniTablePlain;

    UILabel * headerLabel = [[[UILabel alloc] initWithFrame:CGRectZero] autorelease];
    headerLabel.backgroundColor = [UIColor clearColor];
    headerLabel.opaque = NO;
    headerLabel.textColor = [UIColor whiteColor];
    headerLabel.font = [UIFont boldSystemFontOfSize:16];
    headerLabel.frame = CGRectMake(10.0,-11.0, 320.0, 44.0);
    headerLabel.textAlignment = UITextAlignmentLeft;
    headerLabel.text = titolo;

    [headerView addSubview:headerLabel];

    return headerView;
}

прокрутка прерывистая и не мгновенная (скольжение пальца по экрану не соответствует немедленному смещению стола).

Я не знаю, что вызвало эту проблему, возможно, тот факт, что каждый раз, когда вызывается метод viewForHeaderInSection: код запускается для создания нового UIImageView.

Я попытался решить эту проблему многими способами, например, создать массив всех необходимых представлений: помимо увеличения времени загрузки при запуске, существует постоянная проблема низкой реактивности таблицы.

Попытка уменьшить размер UIImageView с примерно 66 КБ до 4 КБ: не только ухудшается качество цветов (что немного искажает оригинальную графику), но ... проблема сохраняется!

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

Я прошу прощения за мой английский, я использовал Google для перевода.

1 Ответ

1 голос
/ 17 мая 2010

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

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

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