您的位置:首页 > 其它

TableView中图片加载优化

2016-08-02 23:21 183 查看
开头语:今天看了苹果的LazyTableImages的demo,记录一下处理方法。

@import UIKit;
这句话系统自动帮你将UIKit导入Build Phases中Link Binary With Libraries中。

让一个数组中的所有元素去执行相同的方法时除了使用 for loop 语法之外 还可以使用
makeObjectsPerformSelector:
这个方法。拓展:在Swift中
enumerateObjectsUsingBlock:
来代替。eg:

NSArray *allDownloads = [self.imageDownloadsInProgress allValues];
[allDownloads makeObjectsPerformSelector:@selector(cancelDownload)];


3.苹果官方优化思想是在当前tableView处于滑动状态时不去加载图片,不滑动时再去加载

在tableView初始化cell时添加一层当前tableView的状态判断,如果当前cell中的imageView已经加载到图片,那么就直接加载,否则等tableView不滑动时再去加载。

//图片不存在
if (!appRecord.appIcon)
{
if (self.tableView.dragging == NO && self.tableView.decelerating == NO)
{
//去加载图片
}
// 暂缓加载,先用背景图片显示
cell.imageView.image = [UIImage imageNamed:@"Placeholder.png"];
}
else//图片存在,则直接加载
{
cell.imageView.image = appRecord.appIcon;
}


然后就是在UIScrollViewDelegate中监听

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (!decelerate)
{
//加载图片
}
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//加载当前正展示cell的图片
}


Demo:https://developer.apple.com/library/prerelease/content/samplecode/LazyTableImages/Introduction/Intro.html#//apple_ref/doc/uid/DTS40009394
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: