소스 검색

推荐视频数据显示

jsonwang 4 년 전
부모
커밋
7445864f6e

+ 91 - 39
MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/MVHomeController.swift

@@ -50,9 +50,7 @@ class MVHomeController: MVBaseController {
         settingBtn.tag = 3000
         return settingBtn
     }()
-
-    // 所有分类数据
-    var itemList: [MVTagsModel] = Array<MVTagsModel>.init()
+ 
     // 标签分类
     lazy var collectionView: UICollectionView = {
         let flowLayout = UICollectionViewFlowLayout()
@@ -76,44 +74,72 @@ class MVHomeController: MVBaseController {
         collectionView.delaysContentTouches = false
         return collectionView
     }()
+    
+    var mVideos:Array = Array<MVHotVideoModel>.init()
+    
+    var mAllVideos:Array = Array<PQVideoListModel>.init()
 
     override func viewDidLoad() {
         super.viewDidLoad()
-        view.addSubview(mineBtn)
+//        view.addSubview(mineBtn)
         view.addSubview(stuckPointBtn)
         view.addSubview(settingBtn)
         view.addSubview(banner)
         view.addSubview(collectionView)
         banner.dataSource = self
         banner.delegate = self
-        banner.reloadData()
         banner.isShowPageControl = false
+        banner.reloadData()
 
         addLayout()
-
-        for i in 0 ... 10 {
-            var model: MVTagsModel = MVTagsModel()
-            model.tagEmoji = "https://img0.baidu.com/it/u=3433562696,4282002140&fm=26&fmt=auto&gp=0.jpg"
-            model.tagName = "热门"
-            if(i == 5){
-                model.tagName = "我是中华人民有共和国"
+ 
+        MVHomeViewModel.getHomeHotVideos {[weak self] hotVideos, _ in
+            BFLog(message: "hotVideos count is :\(hotVideos.count)")
+            
+            self?.mVideos = hotVideos
+            
+            self?.collectionView.reloadData()
+            if((self?.mVideos.count ?? 0) > 0 ){
+                
+                self?.mVideos[0].isSelected = true
+                for hotModel in  self!.mVideos{
+                    for video in hotModel.videos {
+                        self?.mAllVideos.append(video)
+                    }
+                }
+                BFLog(message: " self?.mAllVideos count is \(String(describing: self?.mAllVideos.count))")
             }
-         
-            itemList.append(model)
+            
+            self?.banner.reloadData()
+        
+            
+            
         }
         
-        MVHomeViewModel.getHomeHotVideos {[weak self] hotVideos, _ in
-            BFLog(message: "hotVideos count is :\(hotVideos.count)")
+        
+     
+        
+        PQSingletoVideoPlayer.shared.progressBloc = { [weak self] loadProgress, playProgress, duration in
+        
+            BFLog(message: "loadProgress \(loadProgress) playProgress\(playProgress) \(duration)")
+ 
+        }
+        PQSingletoVideoPlayer.shared.playStatusBloc = { [weak self] status in
+
+            if(status == .PQVIDEO_PLAY_STATUS_END){
+                PQSingletoVideoPlayer.shared.resetPlayer()
+            }
         }
     }
+    
 
     func addLayout() {
-        mineBtn.snp.remakeConstraints { make in
-            make.width.equalTo(60)
-            make.height.equalTo(60)
-            make.left.equalToSuperview().offset(16)
-            make.bottom.equalToSuperview().offset(-50)
-        }
+//        mineBtn.snp.remakeConstraints { make in
+//            make.width.equalTo(60)
+//            make.height.equalTo(60)
+//            make.left.equalToSuperview().offset(16)
+//            make.bottom.equalToSuperview().offset(-50)
+//        }
         stuckPointBtn.snp.remakeConstraints { make in
             make.width.equalTo(60)
             make.height.equalTo(60)
@@ -146,7 +172,9 @@ class MVHomeController: MVBaseController {
     @objc func btnClick(sender: UIButton) {
         // 先判断是否登录
         if !BFLoginUserInfo.shared.isLogin() && sender.tag != 3000 {
-            navigationController?.present(MVLoginController(), animated: true, completion: nil)
+            let vc = MVLoginController()
+            vc.modalPresentationStyle = .fullScreen
+            present(vc, animated: true, completion: nil)
             return
         }
 
@@ -172,19 +200,21 @@ class MVHomeController: MVBaseController {
 
 extension MVHomeController: MVBannerDataSource, MVBannerDelegate {
     func numberOfItems() -> Int {
-        return 3
+        return mAllVideos.count
     }
 
     func banner(_ banner: MVBanner, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
         let cell: MVBannerCell = banner.dequeueReusableCell(for: indexPath)
         cell.contentView.layer.masksToBounds = true
         cell.contentView.layer.cornerRadius = 10
-        cell.contentView.backgroundColor = UIColor.red
-        cell.iconIView.image = UIImage(named: String(format: "banner%d.jpeg", indexPath.row))
+        cell.contentView.backgroundColor = UIColor.white
+ 
+        cell.videoData = mAllVideos[indexPath.row]
         cell.reCreateBtnClicHandle = { [weak self] _, _ in
             BFLog(message: "点击了创同款")
+            PQSingletoVideoPlayer.shared.stopPlayer(isRemove: false)
         }
-//        cell.typeLabe.text = String(indexPath.row)
+ 
 
         return cell
     }
@@ -193,6 +223,32 @@ extension MVHomeController: MVBannerDataSource, MVBannerDelegate {
 
     func banner(_: MVBanner, didSelectItemAt indexPath: IndexPath) {
         NSLog("didSelectItemAt %d", indexPath.row)
+        
+        let cell: MVBannerCell?  =  banner.collectionView.cellForItem(at: indexPath) as? MVBannerCell
+        
+        if(PQSingletoVideoPlayer.shared.player.isPlaying()){
+            cell?.pauseView.isHidden = false
+            PQSingletoVideoPlayer.shared.stopPlayer(isRemove: false)
+        
+        }else{
+            PQSingletoVideoPlayer.shared.resetPlayer()
+            cell?.pauseView.isHidden = true
+        }
+
+    }
+    
+    func pageControl(currentPage page: Int) {
+        BFLog(message: "page is \(page)")
+        
+        let cell: MVBannerCell?  =  banner.collectionView.cellForItem(at: IndexPath.init(row: page, section: 0)) as? MVBannerCell
+        
+       
+        if (mVideos.count > 0  && cell != nil) {
+            cell?.pauseView.isHidden = true
+            PQSingletoVideoPlayer.shared.configPlyer(videoData:  mAllVideos[page], controllerView: cell!.iconIView)
+        }
+        
+    
     }
 }
 
@@ -201,40 +257,36 @@ extension MVHomeController: MVBannerDataSource, MVBannerDelegate {
 /// 卡点音乐相关代理
 extension MVHomeController: UICollectionViewDelegate, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout, UIScrollViewDelegate {
     func collectionView(_: UICollectionView, numberOfItemsInSection _: Int) -> Int {
-        return itemList.count
+        return mVideos.count
     }
 
     func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
-        let itemData: MVTagsModel = itemList[indexPath.item]
+        let itemData: MVHotVideoModel = mVideos[indexPath.item]
         let cell = MVTagsCell.tagsCell(collectionView: collectionView, indexPath: indexPath)
         cell.bgmData = itemData
         return cell
     }
 
     func collectionView(_ collectionView: UICollectionView, layout _: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
-        let itemData: MVTagsModel = itemList[indexPath.item]
-        let width:CGFloat = CGFloat(CGFloat((itemData.tagName ?? "" as String).ga_widthForComment(font:UIFont.boldSystemFont(ofSize: 17),height:17.0)) + 36.0 + 20.0)
+        let itemData: MVHotVideoModel = mVideos[indexPath.item]
+        let width:CGFloat = CGFloat(CGFloat((itemData.categoryName ).ga_widthForComment(font:UIFont.boldSystemFont(ofSize: 17),height:17.0)) + 36.0 + 20.0)
  
         return CGSize(width: width, height: collectionView.frame.height)
     }
   
 
     func collectionView(_: UICollectionView, didSelectItemAt indexPath: IndexPath) {
-        let itemData: MVTagsModel = itemList[lastIndexPath.item]
+        let itemData: MVHotVideoModel = mVideos[lastIndexPath.item]
         itemData.isSelected = false
         lastIndexPath = indexPath
-        let itemDataNew: MVTagsModel = itemList[lastIndexPath.item]
+        let itemDataNew: MVHotVideoModel = mVideos[lastIndexPath.item]
         itemDataNew.isSelected = true
         collectionView.reloadData()
     }
 
-    func scrollViewDidScroll(_: UIScrollView) {
-//        if scroDidScroHandle != nil {
-//            scroDidScroHandle!()
-//        }
-    }
+ 
 
     func collectionView(_: UICollectionView, willDisplay _: UICollectionViewCell, forItemAt indexPath: IndexPath) {
-        let itemData: Any = itemList[indexPath.item]
+        let itemData: Any = mVideos[indexPath.item]
     }
 }

+ 5 - 0
MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/Models/MVHotVideoModel.swift

@@ -13,6 +13,11 @@ class MVHotVideoModel: NSObject {
     var categoryId:Int = 0
     //分类名
     var categoryName:String = ""
+    //图标
+    var categoryEmoji:String = ""
     //分类下所有推荐视频
     var videos:Array = Array<PQVideoListModel>.init()
+    // 是否被选中
+    var isSelected: Bool = false
+    
 }

+ 2 - 0
MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/ViewModels/MVHomeViewModel.swift

@@ -40,10 +40,12 @@ class MVHomeViewModel: NSObject {
                         let hotVideoModel:MVHotVideoModel = MVHotVideoModel.init()
                         hotVideoModel.categoryId = item["categoryId"] as? Int ?? 0
                         hotVideoModel.categoryName = item["categoryName"]  as? String ?? ""
+                        hotVideoModel.categoryEmoji = item["categoryEmoji"] as? String ?? ""
                         
                         let videos = item["videos"] as! [[String: Any]]
                         for video in videos {
                             let tempModel = PQVideoListModel(jsonDict: video)
+                            tempModel.categoryName = hotVideoModel.categoryName
                             hotVideoModel.videos.append(tempModel)
                           
                         }

+ 26 - 2
MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/Views/MVBannerCell.swift

@@ -23,6 +23,13 @@ class MVBannerCell: UICollectionViewCell {
         return bottmMaskView
     }()
     
+    lazy var pauseView: UIImageView = {
+        let pauseView = UIImageView.init(image: UIImage.init(named: "video_pause"))
+        pauseView.isHidden = false
+        return pauseView
+    }()
+    
+    
     /// 音乐歌曲名称
     lazy var musicNameLab: LMJHorizontalScrollText = {
         let name:String = "文件名称"
@@ -41,6 +48,8 @@ class MVBannerCell: UICollectionViewCell {
         return musicNameLab
     }()
     
+    
+    
     /// 音乐标题
     lazy var musicNameView: UIView = {
         let musicNameView = UIView()
@@ -80,6 +89,8 @@ class MVBannerCell: UICollectionViewCell {
         typeLabe.font = UIFont.systemFont(ofSize: 13)
         return typeLabe
     }()
+    
+    
     var videoData: PQVideoListModel? {
         didSet {
             addData()
@@ -89,7 +100,7 @@ class MVBannerCell: UICollectionViewCell {
     
     override func layoutSubviews() {
         super.layoutSubviews()
-        self.iconIView.frame = CGRect.init(x: 60, y: 0, width: self.bounds.size.width - 200, height: self.bounds.size.height)
+        self.iconIView.frame = CGRect.init(x: 0, y: 0, width: self.bounds.size.width, height: self.bounds.size.height)
 
         
         self.typeLabe.snp.remakeConstraints { make in
@@ -112,6 +123,12 @@ class MVBannerCell: UICollectionViewCell {
             make.right.equalToSuperview().offset(-16)
             make.bottom.equalToSuperview().offset(-20)
         }
+        
+        self.pauseView.snp.remakeConstraints { make in
+            make.width.equalTo(72)
+            make.height.equalTo(82)
+            make.center.equalToSuperview()
+        }
     }
     
     override init(frame: CGRect) {
@@ -121,13 +138,20 @@ class MVBannerCell: UICollectionViewCell {
         self.contentView.addSubview(self.typeLabe)
         self.contentView.addSubview(self.musicNameView)
         self.contentView.addSubview(self.reCreateBtn)
+        self.contentView.addSubview(self.pauseView)
     
     }
     
     
 
     func addData() {
-    
+        typeLabe.text = videoData?.categoryName
+        
+        musicNameLab.text = videoData?.reCreateVideoData?.rhythmMusicName ?? ""
+
+        let coverImg = (videoData?.videoCoverSnapshotPath != nil && (videoData?.videoCoverSnapshotPath?.count ?? 0) > 0) ? videoData?.videoCoverSnapshotPath ?? "" : (videoData?.coverImg?["coverImgPath"] as? String ?? "")
+        BFLog(message: "coverImg url is \(coverImg)")
+        netImage(url: coverImg, mainView: iconIView)
     }
     
     @objc func btnClick(sender: UIButton) {

+ 5 - 8
MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/Views/MVTagsCell.swift

@@ -46,7 +46,7 @@ class MVTagsCell: UICollectionViewCell {
         fatalError("init(coder:) has not been implemented")
     }
 
-    var bgmData: MVTagsModel? {
+    var bgmData: MVHotVideoModel? {
         didSet {
             addData()
             addLayout()
@@ -54,12 +54,12 @@ class MVTagsCell: UICollectionViewCell {
     }
 
     func addData() {
-        if (bgmData)?.tagEmoji != nil {
-            audioImageView.setNetImage(url: "\((bgmData)?.tagEmoji ?? "")", placeholder: UIImage(named: "videomk_music_default")!)
+        if (bgmData)?.categoryEmoji != nil {
+            audioImageView.setNetImage(url: "\((bgmData)?.categoryEmoji ?? "")", placeholder: UIImage(named: "videomk_music_default")!)
         } else {
             audioImageView.image = UIImage(named: "videomk_music_default")
         }
-        titleLab.text = " \((bgmData)?.tagName ?? "")"
+        titleLab.text = " \((bgmData)?.categoryName ?? "")"
         if(bgmData?.isSelected ?? false){
             contentView.backgroundColor = UIColor.hexColor(hexadecimal: "#EEF0F3")
             titleLab.textColor = UIColor.hexColor(hexadecimal: "#333333")
@@ -70,10 +70,7 @@ class MVTagsCell: UICollectionViewCell {
             titleLab.textColor = UIColor.hexColor(hexadecimal: "#9B9B9B")
             titleLab.font = UIFont.systemFont(ofSize: 15)
         }
-//        titleLab.frame.size.width = CGFloat((titleLab.text?.count ?? 0) * 17)
-    
-     
-
+ 
     }
 
     func addLayout() {