Мерцание заголовка UItableview при повторном использовании идентификатора ячейки - PullRequest
5 голосов
/ 22 декабря 2009

Я создал ячейку, используя

static NSString *CellIdentifier = @"TweetListUserName";

CustomTableViewCell *cell = (CustomTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
        cell = [[[CustomTableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier]autorelease] ;
}

и использовал следующий код для настройки заголовка раздела:

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

        UIView* customView = [[[UIView alloc] initWithFrame:CGRectMake(0.0, -4.0, 320.0, 67.0)]autorelease];
        [customView setOpaque:YES];
        UIImageView *image = [[UIImageView alloc] initWithFrame:CGRectMake(-2.0, -4.0, 328.0, 67.0)];
        [image setImage:[UIImage imageNamed:@"header-msg.png"]];
        [image setOpaque:YES];
        [customView addSubview:image];

        UILabel *label1 =[[UILabel alloc] initWithFrame:CGRectMake(10, 5, 100, 12)];
        label1.text =@"TWEETS MATCHING:"; 
        label1.textAlignment=UITextAlignmentLeft;
        [label1 setTextColor:[UIColor grayColor]];
        [label1 setFont:[UIFont fontWithName:@"Helvetica" size:9]];;
        [label1 setBackgroundColor:[UIColor clearColor]];
        [customView addSubview:label1];
        [label1 release];

        UILabel *label2 =[[UILabel alloc] initWithFrame:CGRectMake(10, 6, 315, 50)];
        label2.text =usernametag; 
        label2.textAlignment=UITextAlignmentLeft;
        [label2 setTextColor:[UIColor blackColor]];
        [label2 setFont:[UIFont fontWithName:@"Helvetica-Bold" size:20]];
        [label2 setBackgroundColor:[UIColor clearColor]];
        [customView addSubview:label2];
        [label2 release];


        return customView;

    }

Однако, когда я быстро прокручиваю таблицу, заголовок мигает почти во всех случаях. Как я могу предотвратить это мерцание?

Ответы [ 3 ]

0 голосов
/ 07 февраля 2012

У меня была похожая проблема.

В моем случае причина была в ячейке пользовательской таблицы. В своей пользовательской ячейке таблицы я использовал объект UITextView с его свойством scrollEnabled, установленным на NO, и свойством editable, установленным на NO.

Проблема была связана с scrollEnabled = NO. С scrollEnabled = YES у меня нет проблем.

Однако, поскольку UITextView без редактирования и прокрутки мало чем отличается от UILabel, я заменил UITextView на UILabel с numberOfLines на 0.

Не спрашивайте меня, почему. Это сработало так. :)

0 голосов
/ 10 мая 2018

Это потому, что вы меняете рамку заголовка в layoutsubviews. Если вы удалите это, оно будет исправлено.

0 голосов
/ 22 декабря 2009

Привет. Я думаю, вам нужно проверить, установлен ли он уже. Теперь у вас есть способ запускать приведенный выше код при каждой прокрутке, а это значит, что он будет установлен довольно много.

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