TableView中图片加载优化

开头语:今天看了苹果的LazyTableImages的demo,记录一下处理方法。

  1. @import UIKit;这句话系统自动帮你将UIKit导入Build Phases中Link Binary With Libraries中。
  2. 让一个数组中的所有元素去执行相同的方法时除了使用 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值