2017-10-11 4 views
0

Si la rastérisation de configuration I comme suit:Comment fonctionne le rastérisation lors de la réutilisation de UITableViewCell?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSString *const cellIdentifier = @"UITableViewCell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if (!cell) { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; 
     cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 
    } 

    cell.layer.shouldRasterize = YES; 
    cell.layer.rasterizationScale = [UIScreen mainScreen].scale; 
    cell.textLabel.text = exampleTitles[indexPath.row]; 

    return cell; 
} 

Pour autant que je sache, le système doit créer un cache d'image pour chaque cellule distincte. Mais que se passe-t-il si le titre de chaque cellule est différent? Comment fonctionne le système pour décider quelle image mise en cache peut être utilisée pour une cellule spécifique?

Répondre

0

Après avoir vu de la session 419 sur WWDC14, j'ai trouvé il y a deux règles:

  • la taille du cache pour le tramage est limitée à 25,5 fois la taille de l'écran

  • les images tramées sont expulsés à partir du cache si elles sont inutilisées pendant plus de 100ms

Et faire profil sur iPhone 6P montre que seul l'écran actuel sera mis en cache.