我目前在xcode中構建了一個客觀的c應用程序,該應用程序具有佔用大約80%屏幕的單元格的全屏水平滾動集合視圖;類似於Instagram,Vine等。最初在這些單元中是在加載視圖時從後端源加載的視頻縮略圖。在滾動視頻的UICollectionView時高效處理加載
因爲一次加載所有這些視頻的效率非常低,所以我試圖找到一種在用戶滾動瀏覽集合視圖時一次只加載一個視頻的方法。
我現在實現這一權利的方式是使用scrollViewDidEndDecelerating
法計算爲準細胞是在屏幕的中央滾動,然後開始加載視頻,還有scrollViewDidScroll
方法停止加載後視頻。這個實現的過程如下:
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
//calculate which cell is in the center
//load video in respective cell
}
-(void)scrollViewDidScroll:(UIScrollView *)scrollView{
//stop loading video
}
正如大家很可能會看到,這會產生很多問題UX:
- 的視頻,直到滾動停止 完全
- 不啓動加載此方法未考慮拖動手勢至 導航收藏視圖
- 加載視頻後,任何拖動或滾動停止加載/播放視頻
- 有次在沒有視頻加載,蝸管之間的
我試圖把這個目前的做法;向與裝載視頻的Instagram的方法的系統,這是如下:
- 視頻在用戶滾動時開始在屏幕上顯示時開始加載
- 當用戶滾動時不同視頻開始出現在屏幕上時,視頻停止加載。
- 一個視頻總是被加載,有與加載一個視頻之間沒有停機另一個
我明白,爲了實現這一功能,這些加載功能將需要爲了在後臺線程完成爲了讓我可以處理的無縫滾動,我只需要知道我應該使用哪些方法,而不是我現在使用的方法來實現此功能。
表示法表示,而不是嘗試基於滾動你可能要推斷細胞知名度如果您還沒有看到'UICollectionViewDelegate'的'willDisplay:'和'didEndDisplaying:'方法。正如名字所暗示的,這些將直接告訴你什麼時候你可能想要根據正在顯示的單元格開始加載。 – davidf2281