Browse Source

编辑完字幕后刷新保存的数据

jsonwang 3 years ago
parent
commit
c3757d7a8c

+ 15 - 5
BFRecordScreenKit/Classes/RecordScreen/Controller/BFRecordScreenController.swift

@@ -29,6 +29,7 @@ public class BFRecordScreenController: BFBaseViewController {
 
     var currItemModelIndex = 0
     public var itemModels = [BFRecordItemModel]()
+    var showSubtitleIndex = 0
     //    var shouldPlayRecordIndex:Int = -1          // 当前应该播放的录音资源序号
     var currentPlayRecordIndex: Int = -1 // >= 0 :当前正在播放的录音资源序号; -3: 刚录音完,不需要播放录音; -1:初始化阶段
     var isRecording = false { // 是否正在录音
@@ -266,7 +267,7 @@ public class BFRecordScreenController: BFBaseViewController {
         subtitleLabel.text = test
 
         subtitleLabel.numberOfLines = 0
-        subtitleLabel.lineBreakMode = .byClipping
+        subtitleLabel.lineBreakMode = .byWordWrapping
         subtitleLabel.isUserInteractionEnabled = true
         subtitleLabel.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(editSubtitle)))
         return subtitleLabel
@@ -397,8 +398,14 @@ public class BFRecordScreenController: BFBaseViewController {
 
             self?.setSubtitleStyle(settingModel: subtitileModel.setting)
         }
-        subtitleEditView.editSubtitleDone = { [weak self] newtext in
+        subtitleEditView.editSubtitleDone = { [weak self] newtext ,index in
+            //1,刷新 UI
             self?.subtitleLabel.text = newtext
+            
+            self?.setSubtitleStyle(settingModel: (self?.subtitleSettingView.subtitle.setting)!)
+            
+            //更新数据
+            self?.itemModels[self?.currItemModelIndex ?? 0].titleStickers[index].text = newtext
         }
 
         layoutsubview()
@@ -410,22 +417,25 @@ public class BFRecordScreenController: BFBaseViewController {
         BFLog(message: "编辑字幕")
         subtitleEditView.isHidden = false
         subtitleEditView.textView.becomeFirstResponder()
-        subtitleEditView.setNewText(text: subtitleLabel.text ?? "")
+        subtitleEditView.setNewText(text: subtitleLabel.text ?? "",index: showSubtitleIndex)
     }
 
     /// 更新字幕,在回放时使用
     /// - Parameter time: 当前播放的进度
     func updateSubtitle(time: CMTime) {
         var findShowSubtitle: PQEditSubTitleModel?
-        for subtitle in itemModels[currItemModelIndex].titleStickers {
+        for (index,subtitle) in itemModels[currItemModelIndex].titleStickers.enumerated() {
             if subtitle.timelineIn <= CMTimeGetSeconds(time) * 1_000_000, subtitle.timelineOut >= CMTimeGetSeconds(time) * 1_000_000 {
                 findShowSubtitle = subtitle
                 BFLog(message: "找到要显示的字幕 in \(findShowSubtitle?.timelineIn ?? 0.0) out \(findShowSubtitle?.timelineOut ?? 0.0) text:\(findShowSubtitle?.text ?? "") currTime is \(CMTimeGetSeconds(time))")
+                showSubtitleIndex = index
                 break
             }
         }
         if findShowSubtitle != nil {
             subtitleLabel.text = findShowSubtitle?.text
+            setSubtitleStyle(settingModel: subtitleSettingView.subtitle.setting)
+            
         }
     }
 
@@ -440,7 +450,7 @@ public class BFRecordScreenController: BFBaseViewController {
             subtitleLabel.textColor = settingModel.fontColor
 
             let leftPoint: CGFloat = 37
-            let height = sizeWithText(text: subtitleLabel.text ?? "", font: UIFont.systemFont(ofSize: CGFloat(settingModel.subtitleSize * 375 / 1080)), size: CGSize(width: cScreenWidth - leftPoint * 2, height: 102))
+            let height = sizeWithText(text: subtitleLabel.text ?? "", font: UIFont.boldSystemFont(ofSize: CGFloat(settingModel.subtitleSize * 375 / 1080)), size: CGSize(width: cScreenWidth - leftPoint * 2, height: 102))
 
             // 下 //设置位置
             if subtitleSettingView.subtitle.setting.subtitlePoint == 0 {

+ 6 - 3
BFRecordScreenKit/Classes/RecordScreen/View/BFSubtitleEditView.swift

@@ -10,9 +10,11 @@ import BFMediaKit
 import BFUIKit
 import Foundation
 
-typealias EditSubtitleDone = (_ text: String) -> Void
+typealias EditSubtitleDone = (_ text: String,_ index:Int) -> Void
 
 class BFSubtitleEditView: UIView {
+    
+    var showSubtitleIndex = 0
     var editSubtitleDone: EditSubtitleDone?
 
 //    var settingModel:BFSubtitileSettingModel = BFSubtitileSettingModel.init()
@@ -91,11 +93,12 @@ class BFSubtitleEditView: UIView {
         textView.resignFirstResponder()
         if editSubtitleDone != nil {
             BFLog(message: "最后修改的文字为:\(String(describing: textView.text))")
-            editSubtitleDone!(textView.text)
+            editSubtitleDone!(textView.text,showSubtitleIndex)
         }
     }
 
-    func setNewText(text: String) {
+    func setNewText(text: String,index:Int) {
+        showSubtitleIndex = index
         textView.text = text.substring(to: 30)
 //        BFLog(message: "传值\(textView.text)")
 //