瀏覽代碼

1.调整首页UI

wenweiwei 4 年之前
父節點
當前提交
50a75c4adc
共有 17 個文件被更改,包括 219 次插入119 次删除
  1. 22 0
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/categary_icon.imageset/Contents.json
  2. 二進制
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/categary_icon.imageset/categary_icon@2x.png
  3. 二進制
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/categary_icon.imageset/categary_icon@3x.png
  4. 22 0
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/musicName_bg.imageset/Contents.json
  5. 二進制
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/musicName_bg.imageset/musicName_bg@2x.png
  6. 二進制
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/musicName_bg.imageset/musicName_bg@3x.png
  7. 22 0
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/musicName_icon.imageset/Contents.json
  8. 二進制
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/musicName_icon.imageset/musicName_icon@2x.png
  9. 二進制
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/musicName_icon.imageset/musicName_icon@3x.png
  10. 1 3
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/reCreate.imageset/Contents.json
  11. 二進制
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/reCreate.imageset/reCreate.png
  12. 二進制
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/reCreate.imageset/reCreate@2x.png
  13. 二進制
      MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/reCreate.imageset/reCreate@3x.png
  14. 3 1
      MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/Controllers/MVHomeController.swift
  15. 1 10
      MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/ViewModels/MVHomeViewModel.swift
  16. 145 102
      MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/Views/MVBannerCell.swift
  17. 3 3
      MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/Views/MVTagsCell.swift

+ 22 - 0
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/categary_icon.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "categary_icon@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "categary_icon@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二進制
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/categary_icon.imageset/categary_icon@2x.png


二進制
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/categary_icon.imageset/categary_icon@3x.png


+ 22 - 0
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/musicName_bg.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "musicName_bg@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "musicName_bg@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二進制
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/musicName_bg.imageset/musicName_bg@2x.png


二進制
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/musicName_bg.imageset/musicName_bg@3x.png


+ 22 - 0
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/musicName_icon.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "musicName_icon@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "musicName_icon@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

二進制
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/musicName_icon.imageset/musicName_icon@2x.png


二進制
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/musicName_icon.imageset/musicName_icon@3x.png


+ 1 - 3
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/reCreate.imageset/Contents.json

@@ -1,17 +1,15 @@
 {
   "images" : [
     {
-      "filename" : "reCreate.png",
       "idiom" : "universal",
       "scale" : "1x"
     },
     {
-      "filename" : "reCreate@2x.png",
+      "filename" : "reCreate.png",
       "idiom" : "universal",
       "scale" : "2x"
     },
     {
-      "filename" : "reCreate@3x.png",
       "idiom" : "universal",
       "scale" : "3x"
     }

二進制
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/reCreate.imageset/reCreate.png


二進制
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/reCreate.imageset/reCreate@2x.png


二進制
MusicVideoPlus/MusicVideoPlus/Assets.xcassets/Home/reCreate.imageset/reCreate@3x.png


+ 3 - 1
MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/Controllers/MVHomeController.swift

@@ -257,7 +257,7 @@ class MVHomeController: MVBaseController {
         case 1000: //个人中心
             jumpToDetailVc(type: 1)
         case 2000://系统相册
-            jumpToDetailVc(type: 2)
+            jumpToDetailVc(type: 3)
         case 3000://设置
             navigationController?.pushViewController(MVSettingController(), animated: true)
         default:
@@ -340,6 +340,8 @@ class MVHomeController: MVBaseController {
             
             break
         case 3:
+            // 关闭视频播放
+            controlPlayrPasueOrResume(isPause: true)
             let nav = UINavigationController(rootViewController: PQStuckPointMaterialController())
             nav.modalPresentationStyle = .overFullScreen
             present(nav, animated: true, completion: nil)

+ 1 - 10
MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/ViewModels/MVHomeViewModel.swift

@@ -25,13 +25,9 @@ class MVHomeViewModel: NSObject {
     /// - Returns: <#description#>
     class func  getHomeHotVideos(completeHander: @escaping (_ hotVideos: Array<MVHotVideoModel>, _ msg: String?) -> Void) {
         var url: String = PQENVUtil.shared.longvideoapi
-        
         url = url + "rhythmapp/homepage/getAllVideos"
-  
         SWNetRequest.postRequestData(url: url, parames: nil) { response, _, error, _ in
-            
             DispatchQueue.global().async {
-
                 var hotVideos:Array = Array<MVHotVideoModel>.init()
                 if !(response is NSNull), response != nil {
                     let tempArr = response as! [[String: Any]]
@@ -41,25 +37,20 @@ class MVHomeViewModel: NSObject {
                         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
+                            tempModel.categoryImage = hotVideoModel.categoryEmoji
                             hotVideoModel.videos.append(tempModel)
-                          
                         }
                         hotVideos.append(hotVideoModel)
-
-                     
                     }
                     DispatchQueue.main.async {
-
                         completeHander(hotVideos, nil)
                     }
                 } else {
                     DispatchQueue.main.async {
-
                         completeHander(hotVideos, error?.msg)
                     }
                 }

+ 145 - 102
MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/Views/MVBannerCell.swift

@@ -6,12 +6,13 @@
 //  Copyright © 2020 gin. All rights reserved.
 //
 
-import UIKit
 import BFFramework
+import UIKit
 
 class MVBannerCell: UICollectionViewCell {
-    
-    //封面
+    // 做同款
+    var reCreateBtnClicHandle: ((_ sender: UIButton, _ videoInfo: PQVideoListModel?) -> Void)?
+    // 封面
     lazy var converView: UIImageView = {
         let iv = UIImageView()
         iv.clipsToBounds = true
@@ -20,123 +21,167 @@ class MVBannerCell: UICollectionViewCell {
         iv.addCorner(corner: 8)
         return iv
     }()
-    
-    lazy var progressView:UIProgressView = {
 
+    lazy var progressView: UIProgressView = {
         let progressView = UIProgressView(progressViewStyle: .default)
         progressView.progressTintColor = .white
         return progressView
 
     }()
-    
+
     lazy var backShadowView: UIView = {
-        let backShowView = UIView.init()
+        let backShowView = UIView()
         backShowView.layer.masksToBounds = false
         backShowView.layer.shadowColor = UIColor.black.cgColor
-        backShowView.layer.shadowOpacity = 0.3;//设置阴影的透明度
+        backShowView.layer.shadowOpacity = 0.3 // 设置阴影的透明度
         backShowView.layer.shadowRadius = 4
-        backShowView.layer.shadowOffset = CGSize.init(width: 0, height: 4)//设置阴影的偏移量
+        backShowView.layer.shadowOffset = CGSize(width: 0, height: 4) // 设置阴影的偏移量
         return backShowView
     }()
 
-    //下面 marks view
+    // 下面 marks view
     lazy var bottmMaskView: UIImageView = {
-        let bottmMaskView = UIImageView.init(image: UIImage.init(named: "home_marks"))
+        let bottmMaskView = UIImageView(image: UIImage(named: "home_marks"))
+        bottmMaskView.isUserInteractionEnabled = true
         bottmMaskView.addCorner(corner: 8)
         return bottmMaskView
     }()
-    //暂停view
+
+    // 暂停view
     lazy var pauseView: UIImageView = {
-        let pauseView = UIImageView.init(image: UIImage.init(named: "video_pause"))
+        let pauseView = UIImageView(image: UIImage(named: "video_pause"))
         pauseView.isHidden = false
         return pauseView
     }()
-    
-    
+
+    /// 音乐内容view
+    lazy var musicContenView: UIView = {
+        let musicContenView = UIView()
+        return musicContenView
+    }()
+
+    // 音乐图片
+    lazy var musicImageView: UIImageView = {
+        let musicImageView = UIImageView(image: UIImage(named: "musicName_icon"))
+        musicImageView.showLoadingAnimation(duration: 3)
+        return musicImageView
+    }()
+
+    // 音乐背景
+    lazy var musicBgView: UIImageView = {
+        let musicBgView = UIImageView(image: UIImage(named: "musicName_bg"))
+        return musicBgView
+    }()
+
     /// 音乐歌曲名称
     lazy var musicNameLab: LMJHorizontalScrollText = {
-        let name:String = "文件名称"
-        let nameWidth: CGFloat = sizeWithText(text: "\(name)", font: UIFont.systemFont(ofSize: 13), size: CGSize(width: cScreenWidth - ((cDefaultMargin * 6 + 16 * 2) * 2) - (25 + cDefaultMargin * 3), height: cDefaultMargin * 3)).width
-        let musicNameLab = LMJHorizontalScrollText(frame: CGRect(x: 0, y: 0, width: nameWidth < 127 ? 127 : nameWidth, height: cDefaultMargin * 3))
+//        let name: String = ""
+//        let nameWidth: CGFloat = sizeWithText(text: "\(name)", font: UIFont.systemFont(ofSize: 13), size: CGSize(width: cScreenWidth - ((cDefaultMargin * 6 + 16 * 2) * 2) - (25 + cDefaultMargin * 3), height: cDefaultMargin * 3)).width
+        let musicNameLab = LMJHorizontalScrollText(frame: CGRect(x: 16 + cDefaultMargin, y: 0, width: cScreenWidth - 90 - (16 + cDefaultMargin) * 2 - (10 + 106 + 10), height: 32))
         musicNameLab.textColor = UIColor.white
-        musicNameLab.textFont = UIFont.systemFont(ofSize: 13)
-
+        musicNameLab.textFont = UIFont.systemFont(ofSize: 15, weight: .semibold)
         musicNameLab.speed = 0.03
         musicNameLab.moveDirection = LMJTextScrollMoveLeft
-        musicNameLab.moveMode = LMJTextScrollContinuous
+        musicNameLab.moveMode = LMJTextScrollFromOutside
         return musicNameLab
     }()
-    
-    
-    
-    /// 音乐标题
-    lazy var musicNameView: UIView = {
-        let musicNameView = UIView()
-        musicNameView.addSubview(musicNameLab)
-        let nameWidth: CGFloat = musicNameLab.frame.width + (25 + cDefaultMargin * 3)
-        musicNameView.frame = CGRect(x: 16, y: 492, width: nameWidth, height: cDefaultMargin * 3)
-  
-        let musicImageView = UIImageView(image:UIImage.init().BF_Image(named: "stuckPoint_reCreate_music"))
-        musicImageView.frame = CGRect(x:0, y: (musicNameView.frame.height - 22) / 2, width: 22, height: 22)
-        musicNameView.addSubview(musicImageView)
-        musicNameLab.frame.origin.x = musicImageView.frame.maxX + 5
-        return musicNameView
-    }()
-    
-    //做同款
-    var reCreateBtnClicHandle: ((_ sender: UIButton, _ videoInfo: PQVideoListModel?) -> Void)?
+
     lazy var reCreateBtn: UIButton = {
         let reCreateBtn = UIButton(type: .custom)
+        reCreateBtn.setTitle(" 使用音乐", for: .normal)
+        reCreateBtn.titleLabel?.font = UIFont.systemFont(ofSize: 15, weight: .semibold)
+        reCreateBtn.setTitleColor(UIColor.white, for: .normal)
         reCreateBtn.addCorner(corner: 8)
         reCreateBtn.setImage(UIImage(named: "reCreate"), for: .normal)
         reCreateBtn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
         reCreateBtn.backgroundColor = UIColor.hexColor(hexadecimal: "#3DC1C1")
+        reCreateBtn.alpha = 0.8
         return reCreateBtn
     }()
-    
-    //视频分类
-    lazy var typeLabe: UILabel = {
-        let typeLabe = UILabel()
-        typeLabe.backgroundColor = UIColor.init(red: 1, green: 1, blue: 1, alpha: 0.2)
-        typeLabe.alpha = 0.8
-        typeLabe.textColor = .white
-        typeLabe.text = "热门"
-        typeLabe.textAlignment = .center
-        typeLabe.addCorner(corner: 12)
-        typeLabe.font = UIFont.boldSystemFont(ofSize: 13)
-        return typeLabe
+
+    // 视频分类
+    lazy var typeImage: UIImageView = {
+        let typeImage = UIImageView(image: UIImage(named: "categary_icon"))
+        return typeImage
     }()
-    
-    
+
+    // 视频分类
+    lazy var typeLab: UILabel = {
+        let typeLab = UILabel()
+        typeLab.font = UIFont.systemFont(ofSize: 14, weight: .semibold)
+        typeLab.textColor = UIColor.white
+        return typeLab
+    }()
+
+    override func prepareForReuse() {
+        musicNameLab.stop()
+    }
+
     var videoData: PQVideoListModel? {
         didSet {
             addData()
-
+            addLayout()
         }
     }
-    
+
     override func layoutSubviews() {
         super.layoutSubviews()
-   
+    }
+
+    override init(frame: CGRect) {
+        super.init(frame: frame)
+        contentView.addSubview(backShadowView)
+        backShadowView.addSubview(converView)
+        backShadowView.addSubview(bottmMaskView)
+        backShadowView.addSubview(pauseView)
+        bottmMaskView.addSubview(progressView)
+        bottmMaskView.addSubview(typeImage)
+        bottmMaskView.addSubview(typeLab)
+        bottmMaskView.addSubview(reCreateBtn)
+        bottmMaskView.addSubview(musicContenView)
+        musicContenView.addSubview(musicBgView)
+        musicContenView.addSubview(musicImageView)
+        musicBgView.addSubview(musicNameLab)
+    }
+
+    func addData() {
+        typeLab.text = "\(videoData?.categoryName ?? "")"
+        if videoData?.categoryImage != nil {
+            typeImage.setNetImage(url: "\(videoData?.categoryImage ?? "")", placeholder: UIImage(named: "categary_icon")!)
+        } else {
+            typeImage.image = UIImage(named: "categary_icon")
+        }
+        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: converView)
+        musicNameLab.stop()
+        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2) { [weak self] in
+            self?.musicNameLab.move()
+        }
+    }
+
+    ///
+    /// - Returns: <#description#>
+    func addLayout() {
         backShadowView.snp.remakeConstraints { make in
             make.width.equalToSuperview().offset(-15)
             make.height.equalToSuperview().offset(-15)
             make.left.equalToSuperview().offset(15)
             make.top.equalToSuperview()
         }
-        
+
         converView.snp.remakeConstraints { make in
             make.width.equalToSuperview()
-            make.height.equalToSuperview().offset(0)
+            make.height.equalToSuperview()
             make.left.equalToSuperview()
             make.top.equalToSuperview()
         }
 
-        typeLabe.snp.remakeConstraints { make in
-            make.width.equalTo(50)
-            make.height.equalTo(24)
-            make.left.equalTo(musicNameView.snp_left)
-            make.top.equalTo(musicNameView.snp_bottom).offset(6)
+        pauseView.snp.remakeConstraints { make in
+            make.width.equalTo(72)
+            make.height.equalTo(82)
+            make.center.equalToSuperview()
         }
 
         bottmMaskView.snp.remakeConstraints { make in
@@ -146,58 +191,56 @@ class MVBannerCell: UICollectionViewCell {
             make.bottom.equalToSuperview()
         }
 
+        progressView.snp.remakeConstraints { make in
+            make.height.equalTo(2)
+            make.left.equalToSuperview().offset(3)
+            make.right.equalToSuperview().offset(-3)
+            make.bottom.equalToSuperview()
+        }
+
         reCreateBtn.snp.remakeConstraints { make in
-            make.width.equalTo(92)
+            make.width.equalTo(106)
             make.height.equalTo(46)
-            make.right.equalToSuperview().offset(-16)
-            make.bottom.equalToSuperview().offset(-20)
+            make.right.equalToSuperview().offset(-cDefaultMargin)
+            make.bottom.equalTo(progressView.snp_top).offset(-cDefaultMargin * 2)
         }
 
-        pauseView.snp.remakeConstraints { make in
-            make.width.equalTo(72)
-            make.height.equalTo(82)
-            make.center.equalToSuperview()
+        musicContenView.snp.remakeConstraints { make in
+            make.centerY.equalTo(reCreateBtn)
+            make.height.equalTo(32)
+            make.right.equalTo(reCreateBtn.snp_left).offset(-cDefaultMargin)
+            make.left.equalToSuperview().offset(cDefaultMargin)
         }
 
-        progressView.snp.remakeConstraints { make in
-            make.width.equalToSuperview().offset(-6)
-            make.height.equalTo(2)
-            make.left.equalToSuperview().offset(3)
-            make.bottom.equalToSuperview().offset(0)
+        musicImageView.snp.makeConstraints { make in
+            make.top.left.equalToSuperview()
+            make.width.height.equalTo(musicContenView.snp_height)
         }
-    }
-    
-    override init(frame: CGRect) {
-        super.init(frame: frame)
-        
-        contentView.addSubview(backShadowView)
-        backShadowView.addSubview(converView)
-        backShadowView.addSubview(bottmMaskView)
-        backShadowView.addSubview(typeLabe)
-        backShadowView.addSubview(musicNameView)
-        backShadowView.addSubview(reCreateBtn)
-        backShadowView.addSubview(pauseView)
-        backShadowView.addSubview(progressView)
- 
-    }
-  
-    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: converView)
+        musicBgView.snp.makeConstraints { make in
+            make.left.equalTo(musicImageView.snp_centerX)
+            make.right.top.height.equalToSuperview()
+        }
+
+        typeImage.snp.remakeConstraints { make in
+            make.left.equalTo(musicContenView.snp_left)
+            make.height.width.equalTo(22)
+            make.bottom.equalTo(musicContenView.snp_top).offset(-cDefaultMargin)
+        }
+        typeLab.snp.remakeConstraints { make in
+            make.left.equalTo(typeImage.snp_right).offset(5)
+            make.centerY.equalTo(typeImage)
+            make.right.equalTo(musicContenView)
+        }
     }
-    
+
     @objc func btnClick(sender: UIButton) {
         if reCreateBtnClicHandle != nil {
             reCreateBtnClicHandle!(sender, videoData)
         }
     }
-    
-    required init?(coder: NSCoder) {
+
+    required init?(coder _: NSCoder) {
         fatalError("init(coder:) has not been implemented")
     }
 }

+ 3 - 3
MusicVideoPlus/MusicVideoPlus/Classes/Modules/Home/Views/MVTagsCell.swift

@@ -13,7 +13,7 @@ class MVTagsCell: UICollectionViewCell {
     var btnClickHandle: ((_ sender: UIButton, _ bgmData: Any?) -> Void)?
 
     lazy var audioImageView: UIImageView = {
-        let audioImageView = UIImageView(image: UIImage(named: "videomk_music_default"))
+        let audioImageView = UIImageView(image: UIImage(named: "categary_icon"))
         audioImageView.contentMode = .scaleAspectFill
         return audioImageView
     }()
@@ -53,9 +53,9 @@ class MVTagsCell: UICollectionViewCell {
 
     func addData() {
         if (bgmData)?.categoryEmoji != nil {
-            audioImageView.setNetImage(url: "\((bgmData)?.categoryEmoji ?? "")", placeholder: UIImage(named: "videomk_music_default")!)
+            audioImageView.setNetImage(url: "\((bgmData)?.categoryEmoji ?? "")", placeholder: UIImage(named: "categary_icon")!)
         } else {
-            audioImageView.image = UIImage(named: "videomk_music_default")
+            audioImageView.image = UIImage(named: "categary_icon")
         }
         titleLab.text = " \((bgmData)?.categoryName ?? "")"
         if(bgmData?.isSelected ?? false){