[問題] UICollectionView 的更新加快
最近寫的程式架構:
1.畫面上有其他 ui 按鍵,比如左右鍵,以瀏覽於不同資料間
2.另外再擺一個 UICollectionView,用來展示資料
因此,每按一下左右鍵,collection view 就要更新一下資料
它內容有數十筆,誇張的說它要更新兩秒好了
當 user 快速點擊左右鍵時,這個設計就難以忍受
因為點擊左右鍵的速度大約可以一秒三下
我們另外有擺一個 label,用來指示正在瀏覽什麼資料
如果不更新 collection,情況會很完美,label 會更新得很快
假設我要把 collection 的更新搬到另一個 thread 去做
這會面臨'所有 ui 更新都應該在 main thread 做'的經典問題;否決
另一個想法是,左右鍵更新 label 要快
而 collection 更新慢沒有關係;最後再追上而同步即可
但實作上還是有問題
因為當 collection 開始更新,它就是會鎖住 ui 兩秒
這兩秒內如果按 ui, 是不會取得控制權的
(若能取得,我就有解法了;我可以馬上更新內部文件
假設目前 cellForItemAtIndexPath 函式回應到第十個元件好了
從第11個起,我可以回它新文件的資料
畫面是會半新半舊沒錯,但不會卡卡
我可以馬上下個 reload,下一輪更新時再把文件整個刷新)
因此問題或許是在 collection 更新時,我有沒有法子從 ui 取得控制權?
謝謝
--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.251.197.63
※ 文章網址: http://www.ptt.cc/bbs/MacDev/M.1414759152.A.8D1.html
※ 編輯: HuangJC (60.251.197.63), 10/31/2014 20:40:59
推
10/31 20:49, , 1F
10/31 20:49, 1F
→
10/31 20:50, , 2F
10/31 20:50, 2F
有考慮過這問題
所以把運算全部取消
只把每個 cell 填 'tt' 去模擬
光這樣就好,速度就已經不可忍受了
而正式版 tt 必需代換成一段運算,一定更受不了
如果用 'tt' 模擬可以忍受的話
我會把運算分到另一個 thread 去做,並且儲存起來
ui thead 來取用時,就只是提取資料而已
----
其實我在想,也許我手動打造數十個 label 會比用 collection 還好
因為 collection 的彈性太大
它可捲動等特性我是完全用不到的
我把它弄成數十個展示在一個畫面上,而且畫面 layout 只要做一次,永不更動
說穿了我只是想告訴自己:我還懂用一個現成大元件,而不是一堆小元件去打造
※ 編輯: HuangJC (60.251.197.63), 10/31/2014 21:21:44
→
10/31 21:23, , 3F
10/31 21:23, 3F
→
10/31 21:23, , 4F
10/31 21:23, 4F
→
10/31 21:24, , 5F
10/31 21:24, 5F
中間都要穿插一些可以 listen ui event 的機會
※ 編輯: HuangJC (60.251.197.63), 10/31/2014 21:29:17
→
10/31 21:51, , 6F
10/31 21:51, 6F
→
10/31 21:52, , 7F
10/31 21:52, 7F
→
10/31 21:52, , 8F
10/31 21:52, 8F