Browse Source

快慢速版本 UI

jsonwang 3 years ago
parent
commit
0036e7d83f

+ 300 - 31
BFFramework/Classes/Stuckpoint/Controller/PQStuckPointEditerController.swift

@@ -46,6 +46,8 @@ class PQStuckPointEditerController: PQBaseViewController {
     
     //add by ak 是否是再创作模式
     var isReCreate:Bool = false
+    //最后一个选择的模式 BTN 用于还原选中状态
+    var lastEditModelBtn:UIButton?
     // 下一步
     lazy var nextBtn: UIButton = {
         let nextBtn = UIButton(type: .custom)
@@ -70,10 +72,12 @@ class PQStuckPointEditerController: PQBaseViewController {
         playerView.playerEmptyView.isHidden = true
         return playerView
     }()
+    
+    
 
     /// 节奏选择视图
     lazy var sustomSwitchView: PQCustomSwitchView = {
-        let sustomSwitchView = PQCustomSwitchView(frame: CGRect(x: (view.frame.width - cDefaultMargin * 28) / 2, y: view.frame.height - cSafeAreaHeight - cDefaultMargin * 3 - cDefaultMargin * 3, width: cDefaultMargin * 28, height: 35), titles: ["快节奏", "适中", "慢节奏"], defaultIndex: stuckPointMusicData?.speed ?? 2)
+        let sustomSwitchView = PQCustomSwitchView(frame: CGRect(x:16, y: 0, width:180, height: 30), titles: ["快节奏", "适中", "慢节奏"], defaultIndex: stuckPointMusicData?.speed ?? 2)
         sustomSwitchView.switchChangeHandle = { [weak self] sender in
             // 改变速率
             self?.stuckPointMusicData?.speed = sender.tag
@@ -145,25 +149,139 @@ class PQStuckPointEditerController: PQBaseViewController {
             }
             // 埋点上报
             if type == 1 || type == 2 {
-                // 点击上报:拖动拖拽条(左/右部分)
+                // 点击上报:拖动拖拽条(左/右部分)r
                 PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: type == 1 ? .ot_click_dragFront : .ot_click_dragBehind, pageSource: .sp_stuck_previewSyncedUp, extParams: ["targetTime": type == 1 ? startTime * 1000 : endTime * 1000], remindmsg: "点击上报:拖动拖拽条(左/右部分)")
             }
         }
         return stuckPointCuttingView
     }()
 
-    /// 卡点时长显示视图
-    lazy var timeRemindLab: UILabel = {
-        let timeRemindLab = UILabel(frame: CGRect(x: 0, y: stuckPointCuttingView.frame.minY - cDefaultMargin * 4 - cDefaultMargin * 3, width: view.frame.width, height: cDefaultMargin * 4))
-        timeRemindLab.backgroundColor = UIColor.hexColor(hexadecimal: "#262626")
-        timeRemindLab.textAlignment = .center
-        timeRemindLab.font = UIFont.systemFont(ofSize: 12)
-        timeRemindLab.textColor = UIColor.hexColor(hexadecimal: "#999999")
-        let total: Float64 = ((stuckPointMusicData?.endTime ?? Float64(stuckPointMusicData?.duration ?? "0") ?? 0) - (stuckPointMusicData?.startTime ?? 0))
-        timeRemindLab.text = "现卡点时长\(total.formatDurationToHMS()) / 原视频总时长\(selectedTotalDuration.formatDurationToHMS())"
-        return timeRemindLab
+    /// 卡点模式标题
+    lazy var pointEditRemindLab: UILabel = {
+        let pointEditRemindLab = UILabel()
+        pointEditRemindLab.backgroundColor = .clear
+        pointEditRemindLab.textAlignment = .left
+        pointEditRemindLab.font = UIFont.boldSystemFont(ofSize: 14)
+        pointEditRemindLab.textColor = .black
+        pointEditRemindLab.text = "卡点模式"
+        return pointEditRemindLab
+    }()
+    
+    /// 卡点模式标题
+    lazy var sppedTitleLab: UILabel = {
+        let sppedTitleLab = UILabel()
+        sppedTitleLab.backgroundColor = .clear
+        sppedTitleLab.textAlignment = .left
+        sppedTitleLab.font = UIFont.boldSystemFont(ofSize: 14)
+        sppedTitleLab.textColor = .black
+        sppedTitleLab.text = "节奏变化"
+        return sppedTitleLab
+    }()
+    
+    
+    /// 卡点模式下方操作区背景
+    lazy var pointEditBGView: UIView = {
+        let pointEditBGView = UIView.init()
+        pointEditBGView.backgroundColor = .clear
+        return pointEditBGView
+    }()
+    
+    //卡点编辑 btn
+    lazy var pointEditerBtn: UIButton = {
+        let pointEdterBtn = UIButton(type: .custom)
+        pointEdterBtn.setImage(UIImage().BF_Image(named: "pointEditerBtn_n"), for: .normal)
+        pointEdterBtn.setImage(UIImage().BF_Image(named: "pointEditerBtn_h"), for: .selected)
+        pointEdterBtn.addTarget(self, action: #selector(pointEditerBtnClick(sender:)), for: .touchUpInside)
+        pointEdterBtn.isSelected = true
+        pointEdterBtn.adjustsImageWhenHighlighted = false
+        return pointEdterBtn
+    }()
+    
+    //音乐编辑 btn
+    lazy var musicEditerBtn: UIButton = {
+        let musicEditerBtn = UIButton(type: .custom)
+        musicEditerBtn.setImage(UIImage().BF_Image(named: "musicEditerBtn_n"), for: .normal)
+        musicEditerBtn.setImage(UIImage().BF_Image(named: "musicEditerBtn_h"), for: .selected)
+        musicEditerBtn.addTarget(self, action: #selector(musicEditerBtnClick(sender:)), for: .touchUpInside)
+        musicEditerBtn.adjustsImageWhenHighlighted = false
+        return musicEditerBtn
+    }()
+    
+    //快慢速卡点模式 btn
+    lazy var speedStuckBtn: UIButton = {
+        let speedStuckBtn = UIButton(type: .custom)
+        speedStuckBtn.setBackgroundImage(UIImage().BF_Image(named: "speedstuck_n"), for: .normal)
+  
+        speedStuckBtn.setBackgroundImage(UIImage().BF_Image(named: "speedstuck_h"), for: .selected)
+  
+        speedStuckBtn.addTarget(self, action: #selector(editModelClick(sender:)), for: .touchUpInside)
+        speedStuckBtn.isSelected = true
+        lastEditModelBtn = speedStuckBtn
+        speedStuckBtn.tag = 1
+        speedStuckBtn.adjustsImageWhenHighlighted = false
+        return speedStuckBtn
+    }()
+
+    //跳转卡点模式 btn
+    lazy var jumpPointBtn: UIButton = {
+        let jumpPointBtn = UIButton(type: .custom)
+        jumpPointBtn.setImage(UIImage().BF_Image(named: "jumpPoint_n"), for: .normal)
+        jumpPointBtn.setImage(UIImage().BF_Image(named: "jumpPoint_h"), for: .selected)
+        jumpPointBtn.tag = 2
+        jumpPointBtn.addTarget(self, action: #selector(editModelClick(sender:)), for: .touchUpInside)
+        jumpPointBtn.adjustsImageWhenHighlighted = false
+        return jumpPointBtn
+    }()
+ 
+    //仅配乐模式 btn
+    lazy var onlyMusicBtn: UIButton = {
+        let onlyMusicBtn = UIButton(type: .custom)
+        onlyMusicBtn.setImage(UIImage().BF_Image(named: "onlyMusic_n"), for: .normal)
+        onlyMusicBtn.setImage(UIImage().BF_Image(named: "onlyMusic_h"), for: .selected)
+        onlyMusicBtn.tag = 3
+        onlyMusicBtn.addTarget(self, action: #selector(editModelClick(sender:)), for: .touchUpInside)
+        onlyMusicBtn.adjustsImageWhenHighlighted = false
+        return onlyMusicBtn
+    }()
+    //编辑模式的指示线
+    lazy  var editModelLineView: UIView = {
+        let editModelLineView = UIView.init()
+        editModelLineView.backgroundColor = UIColor.hexColor(hexadecimal: "#EFEFEF")
+        return editModelLineView
+    }()
+    
+    //操作面板上的分割线
+    lazy  var optionlineView: UIView = {
+        let optionlineView = UIView.init()
+        optionlineView.backgroundColor = UIColor.hexColor(hexadecimal: "#EFEFEF")
+        return optionlineView
+    }()
+    
+    lazy var speedSettingView:PQSpeedSettingView = {
+        
+        let speedSettingView = PQSpeedSettingView.init()
+        speedSettingView.backgroundColor = .clear
+        speedSettingView.viewType = 1
+        speedSettingView.selectSpeedCallBack = { [weak self] maxSpeed,minSpeed in
+            BFLog(message: "maxSpeed is\(maxSpeed) minSpeed \(minSpeed)")
+            if(maxSpeed == 0 && minSpeed == 0){
+                self?.customSpeedSettingView.isHidden = false
+            }
+           
+        }
+        return speedSettingView
+        
+    }()
+    
+    //自定义速度
+    lazy var customSpeedSettingView:PQCustomSpeedSettingView = {
+        let customSpeedSettingView = PQCustomSpeedSettingView.init()
+        customSpeedSettingView.isHidden = true
+        return customSpeedSettingView
+        
     }()
 
+ 
     /// 音乐标题
     lazy var musicNameView: UIView = {
         let musicNameView = UIView()
@@ -178,8 +296,6 @@ class PQStuckPointEditerController: PQBaseViewController {
         musicImageView.frame = CGRect(x: musicNameView.frame.height / 2 - 5, y: (musicNameView.frame.height - 22) / 2, width: 22, height: 22)
         musicNameView.addSubview(musicImageView)
         musicNameLab.frame.origin.x = musicImageView.frame.maxX + 5
-        let ges = UITapGestureRecognizer(target: self, action: #selector(musicNameClick))
-        musicNameView.addGestureRecognizer(ges)
         return musicNameView
     }()
 
@@ -230,14 +346,55 @@ class PQStuckPointEditerController: PQBaseViewController {
         // 点击上报:返回按钮
         PQEventTrackViewModel.baseReportUpload(businessType: .bt_buttonClick, objectType: .ot_click_back, pageSource: .sp_stuck_previewSyncedUp, extParams: nil, remindmsg: "卡点视频数据上报-(点击上报:返回按钮)")
     }
-
-    @objc func musicNameClick() {
-//        let musicVc = navigationController?.viewControllers.first(where: { vc in
-//            vc is PQStuckPointMusicController
-//        })
-//        if musicVc != nil {
-//            navigationController?.popToViewController(musicVc!, animated: true)
-//        }
+ 
+    //卡点编辑
+    @objc func pointEditerBtnClick(sender: UIButton) {
+        if(sender.isSelected){return}
+        sender.isSelected = !sender.isSelected
+        musicEditerBtn.isSelected = false
+        
+    }
+    //音乐编辑
+    @objc func musicEditerBtnClick(sender: UIButton) {
+        if(sender.isSelected){return}
+        sender.isSelected = !sender.isSelected
+        pointEditerBtn.isSelected = false
+         
+    }
+    
+    //三种模式修改
+    @objc func editModelClick(sender:UIButton){
+        if(sender.isSelected){
+          
+            BFLog(message:"已经是选中状态")
+            return
+        }
+        lastEditModelBtn?.isSelected = false
+        sender.isSelected = !sender.isSelected
+        lastEditModelBtn = sender
+        
+        BFLog(message: "sender tag is \(sender.tag)")
+        if(sender.tag == 1){//快慢速卡点
+            speedSettingView.viewType = 1
+            speedSettingView.snp.remakeConstraints { make in
+                make.left.equalToSuperview().offset(16)
+                make.right.equalToSuperview()
+                make.top.equalTo(editModelLineView.snp_bottom).offset(8)
+                make.height.equalTo(44)
+            }
+            
+        }else if(sender.tag == 2){//跳越卡点
+            speedSettingView.viewType = 2
+            speedSettingView.snp.remakeConstraints { make in
+                make.left.equalToSuperview().offset(16)
+                make.right.equalToSuperview()
+                make.top.equalTo(editModelLineView.snp_bottom).offset(8)
+                make.height.equalTo(30)
+            }
+            
+        }else if(sender.tag == 3){//仅音乐
+            
+        }
     }
 
     override func viewWillDisappear(_ animated: Bool) {
@@ -252,6 +409,7 @@ class PQStuckPointEditerController: PQBaseViewController {
         leftButton(image: "icon_detail_back", tintColor: PQBFConfig.shared.styleTitleColor)
         navHeadImageView?.addSubview(nextBtn)
         navHeadImageView?.addSubview(musicNameView)
+       
         // 添加子视图
         addSubViews()
         // 导出相册视频
@@ -269,14 +427,125 @@ class PQStuckPointEditerController: PQBaseViewController {
             return
         }
         view.addSubview(playerView)
-        view.addSubview(sustomSwitchView)
-        view.addSubview(stuckPointCuttingView)
-//        view.addSubview(timeRemindLab)
-        // 添加一个背景区分不同色值
-        let backView: UIView = UIView()
-        backView.backgroundColor = PQBFConfig.shared.styleBackGroundColor
-        view.insertSubview(backView, aboveSubview: navHeadImageView!)
-        backView.frame = CGRect(x: 0, y: navHeadImageView?.frame.height ?? 0, width: cScreenWidth, height: (stuckPointCuttingView.frame.minY - cDefaultMargin * 3) - (navHeadImageView?.frame.height ?? 0))
+        view.addSubview(pointEditBGView)
+        view.addSubview(optionlineView)
+        
+        view.addSubview(pointEditerBtn)
+        view.addSubview(musicEditerBtn)
+        view.addSubview(customSpeedSettingView)
+  
+        
+        
+        pointEditBGView.addSubview(pointEditRemindLab)
+        pointEditBGView.addSubview(sppedTitleLab)
+        pointEditBGView.addSubview(speedStuckBtn)
+        pointEditBGView.addSubview(jumpPointBtn)
+        pointEditBGView.addSubview(onlyMusicBtn)
+        pointEditBGView.addSubview(editModelLineView)
+        pointEditBGView.addSubview(speedSettingView)
+        
+        
+        pointEditBGView.addSubview(sustomSwitchView)
+//        view.addSubview(stuckPointCuttingView)
+ 
+        pointEditerBtn.snp.makeConstraints { make in
+            make.left.equalToSuperview().offset(100)
+            make.bottom.equalToSuperview().offset(-(14 + cAKSafeAreaHeight))
+            make.height.equalTo(24)
+            make.width.equalTo(24)
+        }
+        
+        musicEditerBtn.snp.makeConstraints { make in
+            make.right.equalToSuperview().offset(-100)
+            make.top.equalTo(pointEditerBtn.snp_top)
+            make.height.equalTo(24)
+            make.width.equalTo(24)
+        }
+        
+        
+        
+        pointEditBGView.snp.makeConstraints { make in
+            make.left.right.equalTo(view)
+            make.bottom.equalTo(pointEditerBtn.snp_top).offset(-7)
+            make.height.equalTo(290)
+        }
+
+        
+        optionlineView.snp.makeConstraints { make in
+            make.left.right.equalToSuperview()
+            make.bottom.equalTo(pointEditBGView.snp_bottom).offset(-1)
+            make.height.equalTo(1)
+        }
+        
+ 
+        pointEditRemindLab.snp.makeConstraints { make in
+            make.left.equalToSuperview().offset(16)
+            make.top.equalToSuperview().offset(16)
+            make.height.equalTo(20)
+            make.width.equalTo(80)
+        }
+ 
+        speedStuckBtn.snp.makeConstraints { make in
+            make.left.equalToSuperview().offset(16)
+            make.top.equalTo(pointEditRemindLab.snp_bottom).offset(8)
+            make.height.equalTo(80)
+            make.width.equalTo(80)
+        }
+        jumpPointBtn.snp.makeConstraints { make in
+            make.left.equalTo(speedStuckBtn.snp_right).offset(10)
+            make.top.equalTo(pointEditRemindLab.snp_bottom).offset(8)
+            make.height.equalTo(80)
+            make.width.equalTo(80)
+        }
+        onlyMusicBtn.snp.makeConstraints { make in
+            make.left.equalTo(jumpPointBtn.snp_right).offset(10)
+            make.top.equalTo(pointEditRemindLab.snp_bottom).offset(8)
+            make.height.equalTo(80)
+            make.width.equalTo(64)
+        }
+        
+        
+        editModelLineView.snp.makeConstraints { make in
+            make.left.equalToSuperview().offset(16)
+            make.right.equalToSuperview()
+            make.bottom.equalTo(onlyMusicBtn.snp_bottom).offset(17)
+            make.height.equalTo(1)
+        }
+        
+        speedSettingView.snp.makeConstraints { make in
+            make.left.equalToSuperview().offset(16)
+            make.right.equalToSuperview()
+            make.top.equalTo(editModelLineView.snp_bottom).offset(8)
+            make.height.equalTo(44)
+        }
+        
+        
+        sppedTitleLab.snp.makeConstraints { make in
+            make.left.equalToSuperview().offset(16)
+            make.top.equalToSuperview().offset(213)
+            make.height.equalTo(20)
+            make.width.equalTo(80)
+        }
+        
+        
+        sustomSwitchView.snp.makeConstraints { make in
+            make.left.equalToSuperview().offset(16)
+            make.top.equalTo(sppedTitleLab.snp_bottom).offset(8)
+            make.height.equalTo(30)
+            make.width.equalTo(180)
+        }
+        
+        
+        speedSettingView.snp.makeConstraints { make in
+            make.left.equalToSuperview()
+            make.top.equalTo(sppedTitleLab.snp_bottom).offset(8)
+            make.height.equalTo(354)
+            make.width.equalTo(cScreenWidth)
+        }
+   
+  
+        
+        
     }
 
     @objc func nextBtnClick(sender _: UIButton) {
@@ -336,7 +605,7 @@ class PQStuckPointEditerController: PQBaseViewController {
     func settingPlayerView() {
         // 1,设置播放器的显示区域 和画布大小
         //  - 按第一个素材尺寸自适应
-        let playerShowHeight = (stuckPointCuttingView.frame.minY - cDefaultMargin * 3) - (navHeadImageView?.frame.maxY ?? 0)
+        let playerShowHeight = pointEditBGView.frame.minY - (navHeadImageView?.frame.maxY ?? 0)
         var showRect: CGRect = PQPlayerViewModel.getShowCanvasRect(editProjectModel: projectModel, showType: 1, playerViewHeight: playerShowHeight)
         if showRect.size.width == showRect.size.height {
             if cScreenWidth > playerShowHeight {