Пользовательский заголовок в табличном представлении замедляет iPhone 3G с 3.1.3 - PullRequest
2 голосов
/ 04 марта 2011

У меня 2 проблемы с использованием пользовательских заголовков uitableview:

1) Более того, пользовательские заголовки сильно замедляют прокрутку списка на реальном iPhone 3G с 3.1.3, в то же время оставаясь идеальными на симуляторе или на реальном iPad. Это код, который я использую:

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

    UIView *headerView = [[HeaderView alloc] init];
    headerView.alpha = 0.7;

    UITextView *label = [[UITextView alloc] initWithFrame:CGRectZero];
    label.textColor = [UIColor whiteColor];

    switch (section) {
        case 0:
            label.text = @"Mattina";
            break;
        case 1:
            label.text = @"Pomeriggio";
            break;
        case 2:
            label.text = @"Sera";
            break;
        default:
            label.text = @"";
            break;

    }

    [headerView addSubview:label];

    return headerView;
}

2) При использовании приведенного выше кода заголовок заголовка не отображается ... где ошибка?

Спасибо!

Ответы [ 3 ]

1 голос
/ 24 марта 2011

В этом я вижу две проблемы:

  1. Почему вы устанавливаете рамку метки в CGRectZero? По умолчанию свойство autoresizing не установлено, поэтому оно не будет растягиваться, чтобы соответствовать Headerview. Я бы точно установил ширину и высоту, просто чтобы быть уверенным, но это может помочь:

    label.autoresizingMask = UIViewAutoresizingFlexibleWidth;

  2. Почему вы используете UITextView вместо UILabel? Это не очень широко известно, но UITextView имеет некоторые проблемы с отображением контента после размещения в прокручиваемых представлениях. Это не всегда обновляет должным образом. Более того, это чрезмерное использование, я лично считаю нелогичным иметь возможность прокручивать представление в другом представлении прокрутки, т.е. UITextView в UITableView.

0 голосов
/ 24 марта 2011

Замедление было вызвано утечкой. Решение состояло в том, чтобы просто установить автоматический выпуск объекта headerView:

UIView *headerView = [[[HeaderView alloc] init] autorelease];
0 голосов
/ 04 марта 2011

@ Абрамодж, я думаю, тебе нужно сделать

[label setBackgroundColor:[UIColor clearColor]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...