我的UICollectionView有水平流佈局。每個單元佔據整個屏幕並且分頁打開。每個單元格還包含一個MPMoviePlayerController,我可以毫無問題地播放視頻。但是,如果向左或向右滾動,當前顯示的電影(此時暫停)消失 - 播放器視圖變黑。如果我然後觸發播放,則視頻再次出現。我已經嘗試在scrollview委託方法中添加prepareToPlay以某種方式保持視頻visibile,但沒有成功。MPMoviePlayerController在UICollectionViewCell中滾動時變爲空白
0
A
回答
3
一次只能使用MPMoviePlayerController
的一個實例。這是MPMoviePlayerController
的限制。
就你而言,當你開始滾動時,至少應該初始化兩個MPMoviePlayerController
並試圖播放視頻。這不適用於MPMoviePlayerController
。
如果您想在同一屏幕上同時播放多個視頻,您可能需要考慮使用AVFoundation
。還有基於AVFoundation
的開源視頻播放器。 Usine其中之一將比從零開始創建AVFoundation
播放器更容易。
1
當您滾動收藏視圖時,收藏視圖「可重複使用的池」機制將重新使用不在視線內的單元格,因此現有的電影播放器將被刪除並且其狀態將被重置。當單元格視圖再次可見時,將從池中獲取視圖(或者如果池爲空,則創建一個新視圖),並且需要重新配置它。 你可以在這樣的情況怎麼辦:
- 簡單的解決方案:給每一個集合觀察室的唯一標識符(例如,使用細胞指數路徑座標),所以不回收。回顧這種方法:如果你有很多單元格,你可能會遇到內存問題,因爲每個單元格都是從頭開始重新創建的;並且電影播放器控制器佔用不可忽略的內存
- 更復雜的解決方案:通過觀察每個電影播放器狀態(播放時間,視頻URL,...您可以通過觀察其參數或收聽其通知)字典,再次由單元索引路徑索引。當電池不在視線中時,電影播放器將被重置,但當電池重新開始播放時,您可以將電影播放器的狀態重新配置到正確的位置。顯然,操作不是立即進行的(電影播放器需要時間才能開始渲染視頻),但是不會給應用增加額外的內存壓力。
相關問題
- 1. Swift UICollectionViewCell當滾動時隨機空白的動畫視圖
- 2. UICollectionViewCell中的MPMoviePlayerController
- 3. MPMoviePlayerController空白層
- 4. 滾動時UITableView單元格變空白
- 5. 工具欄變爲空白,同時滾動
- 6. MPMoviePlayerController timedMetadata在iOS 5中返回空白
- 7. UITableViewCell中的UiTextField在滾動時變空
- 8. 滾動時的空白工具欄
- 9. Swift - 滾動備份時表空白
- 10. 當滾動tableview時,單元格變成空白(swift)
- 11. 水平滾動 - 白色空白問題
- 12. UICollectionViewCell在點擊UITextView時滾動,在鍵盤解除時不向後滾動
- 13. document.referrer變爲空白
- 14. MPMoviePlayerController在啓動之前顯示空白屏幕?
- 15. 在滾動後重置UICollectionViewCell中的滾動視圖
- 16. IE滾動條中的額外空白
- 17. 當再次滾動tableview時,單元格顯示爲空白?
- 18. UICollectionViewCell滾動內容問題
- 19. 向下滾動時CSS3漸變下面的不需要的空白空間
- 20. 滾動視圖不滾動,並在底部創建空白
- 21. 大型UICollectionViewCell在滾動上消失
- 22. 平滑滾動在UICollectionView裏面UICollectionViewCell
- 23. UILabel UICollectionViewCell在滾動後設置?
- 24. 活動變成空白
- 25. UIWebView在滾動到頂部時顯示空白
- 26. UICollectionView在滾動時留下空白單元格
- 27. 當tableview被滾動時Textfield變空
- 28. Tableview變空時,我想滾動
- 29. MPMoviePlayerController顯示空白屏幕第二次啓動
- 30. 水平滾動的UICollectionViewCell中的UITableView垂直滾動問題
我切換到AVPlayer,它現在按預期工作。非常感謝! – Shocks