美文网首页iOS开发iOS Developer
WWDC16笔记:What's new in UICol

WWDC16笔记:What's new in UICol

作者: Hesse_Huang | 来源:发表于2016-06-22 14:30 被阅读621次

    一、优化UICollectionViewCell的生命周期
    在iOS9中, UICollectionViewCell在didEndDisplaying后即进入重用队列中;而在iOS10中,UICollectionViewCell在didEndDisplaying后,不会马上进入重用队列,而是再被引用一段时间,如果在进入重用队列前还需要被显示,此cell会willDisplayCellAtIndexPath.

    二、新的UICollectionViewCell加载策略:Cell Pre-Fetching
    在iOS9中, 即将显示具有多列数据的新的一行时,会一次性加载要显示的cells;而在iOS10中,会依次加载这些cells,并且加载的多寡会根据滑动速度而定。一旦用户停止了滑动,这些“因惯性而加载出来”的cell会unload掉。此策略解决了快速滑动下带来的掉帧问题。
    Cell Pre-Fetching在iOS10中默认开启,关闭方法:

    collectionView.isPrefetchingEnabled = false
    

    提醒:
    1.将计算量大的工作放在cellForItemAtIndexPath;
    2.将计算量少的工作放在willDisplayCell/didEndDisplayingCell,因为这是cell要显示前最后能临时抱佛脚的地方了;
    3.即使从cellForItemAtIndexPath返回了cell,这个cell也可能不会显示,如用户突然改变了滑动方向;

    三、DataSource Pre-Fetching

    Pre-Fetching in UICollectionView.png
    Pre-Fetching in UITableView.png

    第一个API可结合各类异步网络请求方法一起使用,不过该cancel时就该cancel(使用第二个API)。

    提醒:
    1.Pre-Fetching是一个“自适应能力”,即当线程忙时,调动Pre-Fetching就不会那么频繁了;
    2.该cancel时就该cancel;

    四、self-sizing cell
    简化estimatedItemSize的计算,现在只需:

    layout.estimatedItemSize = UICollectionViewFlowLayoutAutomaticSize
    

    五、interactive reordering
    与pagingEnabled = true可以达到与Home Screen一样的体验。

    六、UIRefreshControl
    现在UIScrollView, UITableView, UICollectionView都可以直接使用UIRefreshControl了。

    相关文章

      网友评论

        本文标题:WWDC16笔记:What's new in UICol

        本文链接:https://www.haomeiwen.com/subject/bufndttx.html