Преглед изворни кода

1.修改播放器裁剪模式

wenweiwei пре 3 година
родитељ
комит
8a8aa2b364

+ 31 - 5
MusicVideoPlus/Classes/Modules/Mine/Controllers/MVPlayViewController.swift

@@ -15,6 +15,8 @@ class MVPlayViewController: PQBaseViewController {
     var currentIndex: IndexPath?
     var currentActionBtn: UIButton? // 记录上次点击按钮
     var currentVideoData: PQVideoListModel? // 记录上次点击数据
+    var isRequesting: Bool = false // 是否正在请求数据
+    var isPlayEnd: Bool = false // 是否播放结束
     lazy var leftBtn: UIButton = {
         let leftBtn = UIButton(type: .custom)
         leftBtn.frame = CGRect(x: 0, y: cDevice_iPhoneStatusBarHei, width: cDefaultMargin * 4, height: cDefaultMargin * 4)
@@ -51,6 +53,7 @@ class MVPlayViewController: PQBaseViewController {
 
     override func viewDidLoad() {
         super.viewDidLoad()
+        PQSingletoVideoPlayer.shared.stopPlayer()
         view.addSubview(collectionView)
         view.addSubview(leftBtn)
         if itemsList.count <= 0 {
@@ -65,6 +68,7 @@ class MVPlayViewController: PQBaseViewController {
 
         PQSingletoVideoPlayer.shared.playStatusBloc = { [weak self] status in
             if status == .PQVIDEO_PLAY_STATUS_END {
+                self?.isPlayEnd = true
                 if ((self?.currentIndex?.item ?? 0) + 1) < (self?.itemsList.count ?? 0) {
                     //                self?.collectionView.scrollToItem(at: IndexPath(item: (self?.currentIndex?.item ?? 0) + 1, section: 0), at: .top, animated: false)
                     self?.collectionView.contentOffset = CGPoint(x: 0, y: CGFloat((self?.currentIndex?.item ?? 0) + 1) * (self!.collectionView.frame.height))
@@ -73,7 +77,13 @@ class MVPlayViewController: PQBaseViewController {
                     }
                 } else {
                     (self?.collectionView.visibleCell() as? MVPlayControlViewCell)?.tagClick()
+                    self?.loadRequestData(isRefresh: false)
+                }
+                if (self?.currentIndex?.item ?? 0) >= ((self?.itemsList.count ?? 0) - 2) {
+                    self?.loadRequestData(isRefresh: false)
                 }
+            }else if status == .PQVIDEO_PLAY_STATUS_BEGIN{
+                self?.isPlayEnd = false
             }
         }
 
@@ -98,13 +108,18 @@ class MVPlayViewController: PQBaseViewController {
     /// 请求网络数据
     /// - Parameter isRefresh: <#isRefresh description#>
     /// - Returns: <#description#>
-    func loadRequestData(isRefresh: Bool = true) {
+    func loadRequestData(isRefresh: Bool = true,isAutoPlay:Bool = false) {
+        if isRequesting {
+            return
+        }
+        isRequesting = true
         if isRefresh {
             pageNum = 1
         } else {
             pageNum = pageNum + 1
         }
         MVMineViewModel.userVideoListData(pageNum: pageNum) { [weak self] videoList, _ in
+            self?.isRequesting = false
             if videoList != nil, (videoList?.count ?? 0) > 0 {
                 if isRefresh {
                     self?.itemsList = videoList!
@@ -112,7 +127,14 @@ class MVPlayViewController: PQBaseViewController {
                     self?.itemsList = self!.itemsList + videoList!
                 }
                 self?.collectionView.reloadData()
-                self?.scrollViewDidEndDecelerating(self!.collectionView)
+                if self?.currentIndex == nil {
+                    self?.scrollViewDidEndDecelerating(self!.collectionView)
+                }else if (self?.isPlayEnd ?? false), ((self?.currentIndex?.item ?? 0) + 1) < (self?.itemsList.count ?? 0) {
+                    self?.collectionView.contentOffset = CGPoint(x: 0, y: CGFloat((self?.currentIndex?.item ?? 0) + 1) * (self!.collectionView.frame.height))
+                    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.2) { [weak self] in
+                        self?.scrollViewDidEndDecelerating(self!.collectionView)
+                    }
+                }
             } else {
                 self?.pageNum = (self?.pageNum ?? 1) - 1
             }
@@ -154,15 +176,19 @@ extension MVPlayViewController: UICollectionViewDelegate, UICollectionViewDataSo
             return
         }
         let indexPath = collectionView.indexPath(for: cell!)
-//        if currentIndex != nil, currentIndex?.item == indexPath?.item {
+        if currentIndex != nil, currentIndex?.item == indexPath?.item,PQSingletoVideoPlayer.shared.playControllerView != nil {
 //            PQSingletoVideoPlayer.shared.resumePlayer()
-//            return
-//        }
+            return
+        }
         currentIndex = indexPath
         let itemData = itemsList[indexPath?.item ?? 0]
         itemData.playProgress = 0
+        cell?.pauseBtn.isSelected = false
         PQSingletoVideoPlayer.shared.configPlyer(videoData: itemData, controllerView: cell!.coverImageView, renderMode: .RENDER_MODE_FILL_EDGE)
         PQSingletoVideoPlayer.shared.resetPlayer()
+        if (indexPath?.item ?? 0) >= itemsList.count - 2 {
+            loadRequestData(isRefresh: false)
+        }
     }
 
     /// 按钮点击处理