ScrollView 兩個控件復用, ScrollView 的極限優化

通常的 scrollView 用來進行輪播圖的展示.網易新聞中標簽對應的頁面切換展示

舉個栗子:

分析:

創建容器 reusedViewControllers 來存放可以重用的 視圖
創建容器 visibleViewControllers 來存放屏幕中顯示的 視圖

scrollView 出現的時候,

首先需要在屏幕中顯示一張完整的視圖,此刻 做兩件事

1.將視圖 1 添加到 scrollView
2.將視圖 1 添加到visibleViewControllers進行保存

一個視圖->二個視圖

如果向左滑動,會出現 兩個視圖 的情況, 視圖2 也需要加入顯示.當開始滑動的那一刻,做三件事情.

  1. 在 (存放重用的 VC )reusedViewControllers中查找可重用的 VC, 如果沒有找到就創建一個,存在得到的就是視圖2 .

2.將視圖2 添加到(可見的)visibleViewControllers中進行保存,如果視圖2 是在reusedViewControllers中找到的(不是創建的),那么需要將視圖2從reusedViewControllers中移除,相當于將視圖2從reusedViewControllers移動到了visibleViewControllers.
3.將視圖2添加到 scrollView 中進行個性設置

二個視圖-->一個視圖

如果繼續左滑動,直到視圖1看不見的那一刻,也做三件事情

1.講視圖1從 scrollView 中移除removeFromSuperview
2.講視圖1放進reusedViewControllers 中 等待被重用
3.將視圖1中visibleViewControllers中移除 ,因為它已經屬于 reusedViewControllers中了

直接上代碼:

4B4707C0-1374-4D23-A362-6E31BEC09D03.png

懶加載


BD20777D-54B8-41A2-8ABD-90045338FDC5.png
3C83B2C8-8480-422B-A749-86C996F36718.png
E6A43A6B-9FBD-4C3F-80FD-08FDA7B9478E.png
2679759D-AC44-4C41-8CC6-C29C26582E2C.png
263E9DA7-1597-4B4A-B23E-6BBEA3144267.png
2DE12586-F211-47D8-BE0D-1AB9CF201214.png

懶得敲代碼了,直接截圖了.湊合看吧...

2222.gif

然后我們看打印的信息:

6D7ACB64-8651-4F9A-BDE7-D9C2C962D485.png

從打印信息 可以看出來 ScrollView 中有兩個子控件 (隱藏豎直,水平滾動條的情況下)
兩個控件的內存地址都是重復 的

這個適用于 imageView / tableView/ controller
可以用作來輪播圖,

代碼下載

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,180評論 4 61
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,817評論 25 708
  • 小時候希望夢想大大的, 才發現, 有喜歡的小事堅持著, 也是幸事啊, 人生不長, 很容易打發。 ???
    秦小酌閱讀 195評論 0 0
  • 母親是個數學老師,可是她對我的啟蒙卻是從唐詩開始的。很長一段時間,我百思不得其解,為什么要教我背唐詩。后來,我腹黑...
    紅豆漢堡閱讀 287評論 0 1