Przeglądaj źródła

修改title
清除封面filter

harry 3 lat temu
rodzic
commit
adf5e86b2a

+ 2 - 2
BFRecordScreenKit/Classes/BFRecordItemModel.swift

@@ -22,7 +22,7 @@ public class BFRecordItemModel: NSObject {
     var materialDuraion: Double = 0.0
     var fetchCoverImg: ((UIImage) -> Void)?
     var fetchAVUrlAsset: ((AVURLAsset) -> Void)?
-    var fetchPlayItem: ((AVPlayerItem) -> Void)?
+    var fetchPlayItemCallBack: ((BFRecordItemModel?) -> Void)?
     var dealedDurationRanges = [SplitRecordRange]() // 录音切割的时间区间,合成导出时计算
     public var voiceStickers = [PQVoiceModel]() //
     public var videoStickers = [PQEditVisionTrackMaterialsModel]() // 合成导出时计算
@@ -88,7 +88,7 @@ public class BFRecordItemModel: NSObject {
                 return
             }
             self?.playItem = item
-            self?.fetchPlayItem?(item)
+            self?.fetchPlayItemCallBack?(self)
         })
     }
 

+ 20 - 16
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -49,7 +49,7 @@ public class BFRecordScreenController: BFBaseViewController {
             subtitleBtn.isHidden = isRecording
             soundSettingBtn.isHidden = isRecording
             
-            recordBtn.setTitle(isRecording ? "松手 暂停" : "按住 说话", for: .normal)
+            recordBtn.setTitle(isRecording ? "松手 暂停" : "按住 录音", for: .normal)
             recordBtn.backgroundColor = UIColor.hexColor(hexadecimal: "#389AFF", alpha: isRecording ? 0.6 : 1)
             playBtn.isSelected = isRecording
 //            if !isRecording {
@@ -155,7 +155,7 @@ public class BFRecordScreenController: BFBaseViewController {
     lazy var recordBtn: UIButton = {
         let btn = UIButton(type: .custom)
         btn.backgroundColor = ThemeStyleColor
-        btn.setTitle("按住 说话", for: .normal)
+        btn.setTitle("按住 录音", for: .normal)
         btn.addCorner(corner: 6)
         btn.adjustsImageWhenHighlighted = false
         btn.addTarget(self, action: #selector(startRecord), for: .touchDown)
@@ -1491,8 +1491,9 @@ public class BFRecordScreenController: BFBaseViewController {
     }
     
     // 修正视频旋转方向,因为自己录制的竖屏视频会预览为横屏
-    func reloadMaterial(recordItem: BFRecordItemModel) {
-        if let vasset = recordItem.videoAsset, let cell: BFImageCoverViewCell = collectionView.cellForItem(at: IndexPath(item: currItemModelIndex, section: 0)) as? BFImageCoverViewCell {
+    func reloadMaterial() {
+        let recordItem = itemModels[currItemModelIndex]
+        if  let vasset = recordItem.videoAsset, let cell: BFImageCoverViewCell = collectionView.cellForItem(at: IndexPath(item: currItemModelIndex, section: 0)) as? BFImageCoverViewCell {
             setVideoPlay(item: recordItem.playItem, imageView: cell.playView)
             setAudioPlay(item: recordItem.playItem)
             playBtn = cell.playBtn
@@ -1555,12 +1556,12 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
                 self?.progressThumV.isHidden = false
             }
         }
-        recordItem.fetchPlayItem = { [weak self, weak recordItem] _ in
-            guard let item = recordItem else {
+        recordItem.fetchPlayItemCallBack = { [weak self] item in
+            guard let sself = self else {
                 return
             }
-            if indexPath.item == self?.currItemModelIndex {
-                self?.reloadMaterial(recordItem: item)
+            if indexPath.item == sself.currItemModelIndex {
+                sself.reloadMaterial()
             }
         }
         cell.btnClickHandle = { [weak self] sender, _ in
@@ -1580,8 +1581,15 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
             // 暂停状态
             let lastCell: BFImageCoverViewCell? = collectionView.cellForItem(at: IndexPath(item: currItemModelIndex, section: 0)) as? BFImageCoverViewCell
             lastCell?.playBtn.isSelected = false
+
+            events.append(WithDrawModel(type: 0, timestamp: currentAssetProgress.seconds))
+            // 重设撤销栈
+            itemModels[currItemModelIndex].events = events
+            currItemModelIndex = page
             
-            let recordItem = itemModels[page]
+            events = itemModels[currItemModelIndex].events
+            
+            let recordItem = itemModels[currItemModelIndex]
             // 重绘录音区域
             progressThumV.recordItem = recordItem
             DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {[weak self] in
@@ -1592,24 +1600,20 @@ extension BFRecordScreenController: UICollectionViewDelegate, UICollectionViewDa
             progreddL.text = "00:00"
             
             
-            events.append(WithDrawModel(type: 0, timestamp: currentAssetProgress.seconds))
             // 重置指针
             currentAssetProgress = CMTime(seconds: 0, preferredTimescale: 1000)
             searchStopAtRecordRange()
             // 重置播放器
             assetPlayer?.seek(to: CMTime.zero)
             recordPlayer?.seek(to: CMTime.zero)
-            // 重设撤销栈
-            itemModels[currItemModelIndex].events = events
-            events = itemModels[page].events
-            currItemModelIndex = page
+            
             searchStopAtRecordRange()
             changeWithDrawBtnLayout(false)
             
-            // 更新当前page
+            // 重置到首位
             pauseTime = 0
             if recordItem.mediaType == .VIDEO {
-                reloadMaterial(recordItem: recordItem)
+                reloadMaterial()
                 assetPlayer?.seek(to: .zero, toleranceBefore: CMTime(value: 1, timescale: 1_000_000), toleranceAfter: CMTime(value: 1, timescale: 1_000_000))
             }
             if changeItemHandle != nil {

+ 10 - 0
BFRecordScreenKit/Classes/RecordScreen/View/BFImageCoverViewCell.swift

@@ -90,4 +90,14 @@ open class BFImageCoverViewCell: UICollectionViewCell {
             btnClickHandle!(sender, recordItem)
         }
     }
+    
+    func clearImageFilter() {
+        filter.removeTarget(playView)
+        picture.removeTarget(filter)
+        GPUImageContext.sharedFramebufferCache().purgeAllUnassignedFramebuffers()
+    }
+    
+    deinit {
+        clearImageFilter()
+    }
 }