У меня есть проблема оптимизации для заголовков таблицы с простым стилем. Если я использую стандартное представление для таблицы (классический серый с заголовками, установленными 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 для перевода.