iOS 10 UICollectionView 性能优化
UICollectionView cell pre-fetching预加载机制UICollectionView and UITableView prefetchDataSource 新增的API针对self-sizing cells 的改进Interactive reordering
在iOS 10 之前,UICollectionView上面如果有大量cell,当用户活动很快的时候,整个UICollectionView的卡顿会很明显,为什么会造成这样的问题,这里涉及到了iOS 系统的重用机制,当cell准备加载进屏幕的时候,整个cell都已经加载完成,等待在屏幕外面了,也就是整整一行cell都已经加载完毕,这就是造成卡顿的主要原因,专业术语叫做:掉帧.要想让用户感觉不到卡顿,我们的app必须帧率达到60帧/秒,也就是说每帧16毫秒要刷新一次.
iOS 10 之前UICollectionViewCell的生命周期是这样的:
1.用户滑动屏幕,屏幕外有一个cell准备加载进来,把cell从reusr队列拿出来,然后调用prepareForReuse方法,在这个方法里面,可以重置cell的状态,加载新的数据;
2.继续滑动,就会调用cellForItemAtIndexPath方法,在这个方法里面给cell赋值模型,然后返回给系统;
3.当cell马上进去屏幕的时候,就会调用willDisplayCell方法,在这个方法里面我们还可以修改cell,为进入屏幕做最后的准备工作;
iOS 10 UICollectionViewCell的生命周期是这样的:
1.用户滑动屏幕,屏幕外有一个cell准备加载进来,把cell从reusr队列拿出来,然后调用prepareForReuse方法,在这里当cell还没有进去屏幕的时候,就已经提前调用这个方法了,对比之前的区别是之前是cell的上边缘马上进去屏幕的时候就会调用该方法,而iOS 10 提前到cell还在屏幕外面的时候就调用;
2.在cellForItemAtIndexPath中创建cell,填充数据,刷新状态等操作,相比于之前也提前了;
3.用户继续滑动的话,当cell马上就需要显示的时候我们再调用willDisplayCell方法,原则就是:何时需要显示,何时再去调用willDisplayCell方法;
4.当cell完全离开屏幕以后,会调用didEndDisplayingCell方法,跟之前一样,cell会进入重用队列.
在iOS 10 之前,cell只能从重用队列里面取出,再走一遍生命周期,并调用cellForItemAtIndexPath创建或者生成一个cell.在iOS 10 中,系统会cell保存一段时间,也就是说当用户把cell滑出屏幕以后,如果又滑动回来,cell不用再走一遍生命周期了,只需要调用willDisplayCell方法就可以重新出现在屏幕中了.
iOS 10 中,系统是一个一个加载cell的,二以前是一行一行加载的,这样就可以提升很多性能;iOS 10 新增加的Pre-Fetching预加载这个是为了降低UICollectionViewCell在加载的时候所花费的时间,在 iOS 10 中,除了数据源协议和代理协议外,新增加了一个UICollectionViewDataSourcePrefetching协议,这个协议里面定义了两个方法:
- (void)collectionView:(UICollectionView *)collectionView prefetchItemsAtIndexPaths:(NSArray*)indexPaths NS_AVAILABLE_IOS(10_0);
-(void)collectionView:(UICollectionView*)collectionView cancelPrefetchingForItemsAtIndexPaths:(NSArray*)indexPaths NS_AVAILABLE_IOS(10_0);
在ColletionView prefetchItemsAt indexPaths这个方法是异步预加载数据的,当中的indexPaths数组是有序的,就是item接收数据的顺序;
CollectionView cancelPrefetcingForItemsAt indexPaths这个方法是可选的,可以用来处理在滑动中取消或者降低提前加载数据的优先级.
注意:这个协议并不能代替之前读取数据的方法,仅仅是辅助加载数据.
Pre-Fetching预加载对UITableViewCell同样适用.
- 天猴科技-嘉兴手机APP制作
- 找革网-嘉兴APP制作公司
- 培优教育-嘉兴APP设计制作
- 蚂蚁养车-嘉兴APP开发公司
- 日本电产新宝-平湖手机APP制作
- 爱购电子-平湖APP制作公司
- 敏感物资-平湖APP设计制作
- 返利网-平湖APP开发公司
- 和万金融-海宁手机APP制作
- 小杨汽车-海宁APP制作公司
- 含妃时装-海宁APP设计制作
- 凌通电子-海宁APP开发公司
- 育婴堂母婴-海盐手机APP制作
- 乡村人家-海盐APP制作公司
- 华亚织造-海盐APP设计制作
- 后汉装饰-海盐APP开发公司
- 易采-桐乡手机APP制作
- 名品商标-桐乡APP制作公司
- 诚信保-桐乡APP设计制作
- 宜美进出口-桐乡APP开发公司
- 荣昌轴承-嘉善手机APP制作
- 宏昌塑业-嘉善APP制作公司
- 冠农-嘉善APP设计制作
- 盛康医药-嘉善APP开发公司
- 一元夺宝-嘉善一元夺宝系统
- 一元云构-嘉兴一元云购平台
- 一元商城-海宁一元商城开发
- 一元购物-桐乡一元购物软件
推荐阅读
热门文章
随机推荐
服务内容
- 嘉兴APP开发
- 嘉兴APP制作
- 嘉兴APP公司
- 嘉兴APP应用
- 嘉兴APP软件
- 嘉兴APP推广
- 嘉兴APP营销
- 嘉兴APP客户端
- 嘉兴APP开发教程
- 嘉兴APP手机客户端
- 嘉兴APP软件开发
- 嘉兴APP开发公司
- 嘉兴APP应用软件
- 嘉兴APP应用程序
- 嘉兴手机APP
- 嘉兴手机客户端
- 嘉兴手机APP推广
- 嘉兴手机APP营销
- 嘉兴手机APP制作
- 嘉兴客户端推广
- 嘉兴手机开发
- 嘉兴手机应用
- 嘉兴手机APP开发
- 嘉兴软件制作
- 嘉兴手机软件开发
- 嘉兴手机应用软件
- 嘉兴手机应用开发
- 嘉兴手机网站制作
- 嘉兴手机APP软件
- 嘉兴安卓APP开发
- 嘉兴安卓软件开发
- 嘉兴移动APP
- 嘉兴移动APP软件
- 嘉兴移动APP开发
- 嘉兴安卓手机开发
- 嘉兴企业APP制作
- 嘉兴公司APP制作
- 嘉兴企业APP开发
- 嘉兴APP是什么意思
- 嘉兴APP手机软件
- 嘉兴android手机开发
- 嘉兴android开发教程
- 嘉兴android软件开发
- 嘉兴手机客户端开发
- 嘉兴APP客户端开发
- 嘉兴移动互联网推广
- 嘉兴移动互联网营销
- 嘉兴移动客户端开发
- 嘉兴移动APP客户端
- 嘉兴移动APP软件开发
- 嘉兴APP软件开发公司
- 嘉兴APP软件开发价格
- 嘉兴APP手机客户端开发
- 嘉兴安卓手机软件开发
- 嘉兴安卓手机APP开发
- 嘉兴手机APP开发教程
- 嘉兴手机APP软件开发
- 嘉兴手机APP开发软件
- 嘉兴手机APP开发工具
- 嘉兴手机APP如何开发
- 嘉兴手机APP开发教程
- 嘉兴移动APP开发工具
- 嘉兴移动APP开发软件
- 嘉兴手机APP开发教程
- 嘉兴手机APP开发流程
- 嘉兴移动APP开发教程
- 嘉兴安卓手机客户端开发
- 嘉兴移动应用程序开发
- 嘉兴手机应用程序开发
- 嘉兴安卓应用开发软件
- 嘉兴安卓手机应用开发教程