我有一个问题,我不确定是否有可能,所以我想我会在这里寻求建议!
我有一个应用程序,它使用UICollectionView向用户显示按钮网格。我正在使用自举式渐变按钮,因此要绘制每个单元格(一个'网格'中可以有40个按钮),它使用一些系统资源,重绘可能需要一些时间(好到半秒!)。用户也可以将不同的集合加载到集合视图中。为了避免这个加载时间,是否可以将所有单元格保存在一个数组中,而不是在调用-cellForRowAtIndexPath时配置每个单元格,只需从数组中拉出单元格即可?
我不太确定这是否已成功。我的应用程序有一个加载屏幕,因此阵列可以在启动时填充。
谢谢, 保罗
答案 0 :(得分:4)
您可以使用NSCache来保存绘制的单元格
1)@property(非原子,强)NSCache * myCache;
viewDidLoad中的2),
self.myCache = [[NSCache alloc] init];
3)使用这两种方法,
-(id) cellForIndexPathRow:(NSNumber *) number{
return [self.myCache objectForKey:number];
}
-(void) setCell:(id) cell forIndexPathRow:(NSNumber *) number{
[self.myCache setObject:cell forKey:number];
}
4)绘制单元格时,
先打电话
id cell = [self cellForIndexPathRow:[NSNumber numberWithInt:indexPath.row]];
if(!cell){
//then create draw the cell
//store the drawn cell in cache
[self setCell:cell forIndexPathRow:[NSNumber numberWithInt:indexPath.row]];
}