views:

93

answers:

1

I have an optimization problem for the headers of a table with plain style. If I use the standard view for the table (the classic gray with titles set by titleForHeaderInSection:) everything is ok and the scrolling is smooth and immediate.

When, instead, use this code to set my personal view:

- (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;
}

scrolling is jerky and not immediate (sliding the finger on the screen does not match an immediate shift of the table).

I do not know what caused this problem, maybe the fact that every time the method viewForHeaderInSection: is called, the code runs to create a new UIImageView.

I tried many ways to solve the problem, such as creating an array of all the necessary view: apart from more time spent loading at startup, there is a continuing problem of low reactivity of the table.

've Attempted by reducing the size of UIImageView positioned from about 66 KB to 4 KB: not only has a deterioration in quality of colors (which distorts a bit 'original graphics), but ... the problem persists!

Perhaps you have suggestions about it, or know me obscure techniques that enable me to optimize this aspect of my application ...

I apologize for my English, I used Google for translation.

+1  A: 

The main cause of slowdown is that you are allocating new views each time the header view is requested.

Since you know what the header views will look like, and you know how many there are, you may want to pre-create all of the header views, store them in an array, and return them as requested.

jessecurry
Thanks for the reply, but ... I tried many ways to solve the problem, such as creating an array of all the necessary view: apart from more time spent loading at startup, there is a continuing problem of low reactivity of the table.
Pask
I rewrote the code for loading UIViews into an NSArray: everything works! Thanks jessecurry
Pask