我在文件系统中有多个.jpg
个文件,需要在每个单元格UIImageView
中显示。每张图片小于200Kb。分配单元格图像的代码如下:
- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath;
{
BookCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"BookCell" forIndexPath:indexPath];
NSString *coverName = [[_dataSource objectAtIndex:indexPath.row] objectForKey:@"cover"];
NSString *cover = [[NSBundle mainBundle] pathForResource:coverName ofType:@"jpg" inDirectory:@"covers"];
cell.coverImage.image = [[UIImage alloc] initWithContentsOfFile:cover];
...
return cell;
}
体验并不完美,特别是在iPad 2上。在滚动期间,视图是免费的。我怀疑这是由于图像加载。我该如何优化呢?
答案 0 :(得分:0)
代码看得很清楚,但也许图像大小确实比图像视图边界大。
如果它减少了捆绑中图像的大小,或者如果您将它们带到其他位置,请尝试使用正确的大小将它们预先缓存在目录中。
ScrollView性能取决于很多因素,您的视图中是否有很多透明度?这些影响滚动性能非常糟糕。
答案 1 :(得分:0)
我认为你只需要一个图像缓存。您可以使用SDWebImage。 SDWebImage Class。 SDWebImage是一个 异步映像下载器,缓存支持为UIImageView类。
正如您在其提供的文档中所看到的那样:
UIImageView类别,将Web图像和缓存管理添加到 Cocoa Touch框架
异步图片下载器
使用自动缓存到期处理的异步内存+磁盘映像缓存
动画GIF支持
WebP格式支持
背景图片解压缩
保证同一网址不会被多次下载
保证不会一次又一次地重试虚假网址
保证主线程永远不会被阻止
性能!
使用GCD和ARC
Arm64支持