Ver código fonte

相册增加照片选择;
导出增加完成按钮

harry 3 anos atrás
pai
commit
e4609f19bd

+ 1 - 1
Introduce/Record/INIntrocudeController.swift

@@ -91,7 +91,7 @@ class INIntrocudeController: BFBaseViewController {
         alertV.cancelBtn.setTitleColor(UIColor.red, for: .normal)
         alertV.contentLab.textColor = .black
         alertV.remindBlock = { [weak self] item, _ in
-            if item.tag == 1 {
+            if item.tag == 1 {  // 确定返回到上一层
                 self?.recordScreenVC.backBtnClick()
                 self?.super_back()
             }

+ 97 - 5
Introduce/Record/INPhotoVideosController.swift

@@ -14,6 +14,13 @@ import Photos
 
 class INPhotoVideosController: BFBaseViewController {
     var chosedAsset:[PHAsset]?
+    // 按钮高
+    let choseBtnH: CGFloat = cDefaultMargin * 3
+    // 按钮宽
+    let choseBtnW: CGFloat = cDefaultMargin * 5
+    // 间隔
+    let margin: CGFloat = 12
+    
     lazy var albumController: BFPhotoAlbumController = {
         let albumController = BFPhotoAlbumController()
         albumController.mediaType = .video
@@ -49,8 +56,9 @@ class INPhotoVideosController: BFBaseViewController {
     
     lazy var photoMaterialVc: BFPhotosMaterialController = {
         let vc = BFPhotosMaterialController()
+        vc.maxChoseNum = 20
         vc.view.backgroundColor = .black
-        vc.updateFrame(newFrame: CGRect(x: 0, y: cDevice_iPhoneNavBarAndStatusBarHei, width: cScreenWidth, height: cScreenHeigth - cDevice_iPhoneNavBarAndStatusBarHei - cDevice_iPhoneTabBarHei))
+        vc.updateFrame(newFrame: CGRect(x: 0, y: navHeadImageView?.bottomY ?? 0, width: cScreenWidth, height: cScreenHeigth - cDevice_iPhoneNavBarAndStatusBarHei - cDevice_iPhoneTabBarHei))
         vc.selectedMaterialHandle = { [weak self] currentMaterialData, selectedPhotoData, _, _ in
             self?.chosedAsset = selectedPhotoData
             
@@ -58,12 +66,61 @@ class INPhotoVideosController: BFBaseViewController {
         return vc
     }()
     
+    lazy var choseLocalAllBtn: UIButton = {
+        let choseLocalAllBtn = UIButton(frame: CGRect(x: (view.frame.width - choseBtnW * 3) / 4, y: cDevice_iPhoneNavBarAndStatusBarHei + margin, width: choseBtnW, height: choseBtnH))
+        choseLocalAllBtn.setTitleColor(UIColor.hexColor(hexadecimal: "#999999"), for: .normal)
+        choseLocalAllBtn.setTitleColor(BFConfig.shared.styleTitleColor, for: .selected)
+        choseLocalAllBtn.setTitle("全部", for: .normal)
+        choseLocalAllBtn.titleLabel?.font = UIFont.systemFont(ofSize: 17, weight: .medium)
+        choseLocalAllBtn.addCorner(corner: 6)
+        choseLocalAllBtn.tag = 10
+        choseLocalAllBtn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
+        return choseLocalAllBtn
+    }()
+
+    lazy var choseLocalVideoBtn: UIButton = {
+        let choseLocalVideoBtn = UIButton(frame: CGRect(x: choseLocalAllBtn.frame.maxX + (view.frame.width - choseBtnW * 3) / 4, y: choseLocalAllBtn.frame.minY, width: choseBtnW, height: choseBtnH))
+        choseLocalVideoBtn.setTitleColor(UIColor.hexColor(hexadecimal: "#999999"), for: .normal)
+        choseLocalVideoBtn.setTitleColor(BFConfig.shared.styleTitleColor, for: .selected)
+        choseLocalVideoBtn.setTitle("视频", for: .normal)
+        choseLocalVideoBtn.titleLabel?.font = UIFont.systemFont(ofSize: 17, weight: .medium)
+        choseLocalVideoBtn.addCorner(corner: 6)
+        choseLocalVideoBtn.tag = 11
+        choseLocalVideoBtn.isSelected = true
+        choseLocalVideoBtn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
+        return choseLocalVideoBtn
+    }()
+
+    lazy var choseLocalImageBtn: UIButton = {
+        let choseLocalImageBtn = UIButton(frame: CGRect(x: choseLocalVideoBtn.frame.maxX + (view.frame.width - choseBtnW * 3) / 4, y: choseLocalAllBtn.frame.minY, width: choseBtnW, height: choseBtnH))
+        choseLocalImageBtn.setTitleColor(UIColor.hexColor(hexadecimal: "#999999"), for: .normal)
+        choseLocalImageBtn.setTitleColor(BFConfig.shared.styleTitleColor, for: .selected)
+        choseLocalImageBtn.setTitle("照片", for: .normal)
+        choseLocalImageBtn.titleLabel?.font = UIFont.systemFont(ofSize: 17, weight: .medium)
+        choseLocalImageBtn.addCorner(corner: 6)
+        choseLocalImageBtn.tag = 12
+        choseLocalImageBtn.addTarget(self, action: #selector(btnClick(sender:)), for: .touchUpInside)
+        return choseLocalImageBtn
+    }()
+    
+    lazy var choseLineView: UIView = {
+        let choseLineView = UIView(frame: CGRect(x: 0, y: 0, width: 25, height: 3))
+        choseLineView.frame.origin.y = (navHeadImageView?.frame.maxY ?? 0) - 6
+        choseLineView.center.x = choseLocalVideoBtn.center.x
+        choseLineView.backgroundColor = UIColor.hexColor(hexadecimal: BFConfig.shared.styleColor.rawValue)
+        return choseLineView
+    }()
     
+    //MARK: - 生命周期
     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
         showNavigation()
         photoMaterialVc.hiddenNavigation()
 
+        // 清理cache文件
+        clearCacheFile(at: exportVideosDirectory)
+        clearCacheFile(at: exportAudiosDirectory)
+
     }
     
     override func viewDidLoad() {
@@ -71,7 +128,12 @@ class INPhotoVideosController: BFBaseViewController {
 
         leftButton(image: nil, imageName: nil, tintColor: .white)
         navHeadImageView?.backgroundColor = .black
+        navHeadImageView?.frame.size.height = cDevice_iPhoneNavBarAndStatusBarHei + margin * 2 + choseBtnH
         navHeadImageView?.addSubview(changeCollecBtn)
+        navHeadImageView?.addSubview(choseLocalAllBtn)
+        navHeadImageView?.addSubview(choseLocalVideoBtn)
+        navHeadImageView?.addSubview(choseLocalImageBtn)
+        
         addChild(photoMaterialVc)
         view.addSubview(photoMaterialVc.view)
         
@@ -90,7 +152,7 @@ class INPhotoVideosController: BFBaseViewController {
         
     }
     
-    /// 按钮点击事件
+    // MARK: - 按钮点击事件
     /// - Parameter sender: <#sender description#>
     /// - Returns: <#description#>
     @objc func btnClick(sender: UIButton?) {
@@ -102,6 +164,21 @@ class INPhotoVideosController: BFBaseViewController {
             } else {
                 albumController.dismissCategoryView()
             }
+        case 10, 11, 12: // 筛选全部图库
+            choseLocalAllBtn.isSelected = sender?.tag == 10
+            choseLocalVideoBtn.isSelected = sender?.tag == 11
+            choseLocalImageBtn.isSelected = sender?.tag == 12
+            if sender?.tag == 11 {
+                photoMaterialVc.msgType = .video
+            } else if sender?.tag == 12 {
+                photoMaterialVc.msgType = .image
+            } else {
+                photoMaterialVc.msgType = .all
+            }
+            UIView.animate(withDuration: 0.3, delay: 0, options: .allowUserInteraction) { [weak self] in
+                self?.choseLineView.center.x = sender?.center.x ?? 0
+            } completion: { _ in
+            }
         default:
             break
         }
@@ -120,16 +197,31 @@ class INPhotoVideosController: BFBaseViewController {
     }
     
     override func rightBtnClick(sender _: UIButton) {
-        if let asset = self.chosedAsset{
+        if let assets = self.chosedAsset{
             let vc = INIntrocudeController()
-            vc.assets = asset
+            vc.assets = assets
             navigationController?.pushViewController(vc, animated: true)
         }else{
             cShowHUB(superView: nil, msg: "需要选择一个视频")
         }
     }
     
+    func clearCacheFile(at folderPath:String) {
+        if let files = try? FileManager.default.contentsOfDirectory(atPath: folderPath){
+            for file in files {
+                do {
+                    try FileManager.default.removeItem(at: URL(fileURLWithPath: folderPath).appendingPathComponent(file))
+                }catch let error{
+                    BFLog(1, message: "\(error), \(file)")
+                }
+                
+            }
+        }
+    }
+    
+    
+    //MARK: -
     override open var preferredStatusBarStyle: UIStatusBarStyle {
-            return .lightContent
+        return .lightContent
     }
 }

+ 26 - 4
Introduce/Record/INVideoExportController.swift

@@ -15,7 +15,6 @@ import BFCommonKit
 
 class INVideoExportController: BFBaseViewController {
     
-    var videoAsset : AVURLAsset?
     var avplayerTimeObserver: NSKeyValueObservation?
     let backV = UIView()
     var hasExportAll = false
@@ -73,6 +72,14 @@ class INVideoExportController: BFBaseViewController {
         return btn
     }()
     
+    lazy var completeBtn : UIButton = {
+        let btn = UIButton()
+        btn.setTitle("完成", for: .normal)
+        btn.setTitleColor(UIColor.hexColor(hexadecimal: "#B1B1B1"), for: .normal)
+        btn.addTarget(self, action: #selector(completeAction), for: .touchUpInside)
+        return btn
+    }()
+    
     lazy var exportBtn : UIButton = {
         let btn = UIButton()
         btn.setTitle(" 保存到相册", for: .normal)
@@ -87,7 +94,7 @@ class INVideoExportController: BFBaseViewController {
     lazy var bottomView:UIView = {
         let vv = UIView()
         vv.backgroundColor = .black
-        
+        vv.isHidden = true
         return vv
     }()
     
@@ -217,6 +224,7 @@ class INVideoExportController: BFBaseViewController {
         bottomView.addSubview(saveAllBtn)
         bottomView.addSubview(saveOnlyBtn)
         bottomView.addSubview(exportBtn)
+        bottomView.addSubview(completeBtn)
         
         backV.snp.makeConstraints { make in
             make.left.right.equalToSuperview()
@@ -251,11 +259,17 @@ class INVideoExportController: BFBaseViewController {
             }
         }
         
+        completeBtn.snp.makeConstraints { make in
+            make.left.right.equalTo(exportBtn)
+            make.bottom.equalTo(-1 * cSafeAreaHeight - 3)
+            make.height.equalTo(20)
+        }
+        
         exportBtn.snp.makeConstraints { make in
             make.left.equalTo(saveAllBtn)
             make.right.equalTo(saveOnlyBtn)
             make.height.equalTo(50)
-            make.bottom.equalTo(-40)
+            make.bottom.equalTo(completeBtn.snp.top).offset(-10)
         }
         
         saveAllBtn.snp.makeConstraints { make in
@@ -280,7 +294,7 @@ class INVideoExportController: BFBaseViewController {
     //MARK: - 按钮事件
     
      func exportNow(){
-         if bottomView.isHidden {
+         if isExporting {
              cShowHUB(superView: nil, msg: "正在合成中。。。")
              return
          }
@@ -348,6 +362,14 @@ class INVideoExportController: BFBaseViewController {
         }
     }
     
+    @objc func completeAction(){
+        // MARK: 删除所有录制资源. 现在放在了选择相册展示时清理cache
+//        export.clearFileCache()
+//        try? FileManager.default.removeItem(at: self.saveAllUlr)
+//        try? FileManager.default.removeItem(at: self.saveOnlyUlr)
+        self.navigationController?.popToRootViewController(animated: true)
+    }
+    
     @objc func play(){
         if isExporting {
             self.avplayer.pause()