重用UITableViewCell时光栅化如何工作?

时间:2017-10-11 02:38:56

标签: ios objective-c uitableview rasterizing reuseidentifier

如果我按如下方式设置光栅化:

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

据我所知,系统应该为每个不同的单元格创建一个图像缓存。但是如果每个小区的标题都不同呢?系统如何确定哪个缓存图像可用于特定单元格?

1 个答案:

答案 0 :(得分:0)

在观看WWDC14上的会话419之后,我发现有两条规则:

  • 光栅化的缓存大小限制为屏幕大小的25.5倍

  • 如果光栅化图像未使用超过100毫秒,则会从缓存中逐出

在iPhone 6P上进行个人资料显示只会缓存当前屏幕。