加了录音自动保存功能
authorliangzhenying <867174124@qq.com>
Mon, 2 Mar 2026 02:17:54 +0000 (10:17 +0800)
committerliangzhenying <867174124@qq.com>
Mon, 2 Mar 2026 02:17:54 +0000 (10:17 +0800)
14 files changed:
ShenYin/ShenYin.xcodeproj/project.pbxproj
ShenYin/ShenYin/Cache/TipsCache.swift
ShenYin/ShenYin/Sdk/DcSdk/VC/DcCallingRecordVC.swift [deleted file]
ShenYin/ShenYin/Sdk/DcSdk/VC/DcStereoCallVC.swift
ShenYin/ShenYin/Sdk/DcSdk/VC/DcTctyVC.swift
ShenYin/ShenYin/Sdk/DcSdk/VC/DcXclyVC.swift
ShenYin/ShenYin/Sdk/DcSdk/tool/OpusTools.swift
ShenYin/ShenYin/Sdk/JoySdk/VC/JoyCallingRecordVC.swift
ShenYin/ShenYin/Sdk/JoySdk/VC/JoyStereoCallVC.swift
ShenYin/ShenYin/Sdk/JoySdk/VC/JoyTctyVC.swift
ShenYin/ShenYin/Sdk/JoySdk/VC/JoyXclyVC.swift
ShenYin/ShenYin/UI/Mine/MoreSetVC.swift
ShenYin/ShenYin/lan/chinese.swift
ShenYin/ShenYin/lan/english.swift

index c69caea..69d9ccb 100644 (file)
                                Sdk/DcSdk/tool/JLAudioUnitKit.xcframework,
                                Sdk/DcSdk/tool/OpusTools.swift,
                                Sdk/DcSdk/VC/AiFunctionVC.swift,
-                               Sdk/DcSdk/VC/DcCallingRecordVC.swift,
                                Sdk/DcSdk/VC/DcChatVC.swift,
                                Sdk/DcSdk/VC/DcChinese2EnglishVC.swift,
                                Sdk/DcSdk/VC/DcDialogTranslateVC.swift,
                                Sdk/DcSdk/tool/JLAudioUnitKit.xcframework,
                                Sdk/DcSdk/tool/OpusTools.swift,
                                Sdk/DcSdk/VC/AiFunctionVC.swift,
-                               Sdk/DcSdk/VC/DcCallingRecordVC.swift,
                                Sdk/DcSdk/VC/DcChatVC.swift,
                                Sdk/DcSdk/VC/DcChinese2EnglishVC.swift,
                                Sdk/DcSdk/VC/DcDialogTranslateVC.swift,
                                CODE_SIGN_ENTITLEMENTS = ShenYin/PLAYBOY.entitlements;
                                CODE_SIGN_IDENTITY = "Apple Development";
                                CODE_SIGN_STYLE = Automatic;
-                               CURRENT_PROJECT_VERSION = 202602271457;
+                               CURRENT_PROJECT_VERSION = 202603021003;
                                DEVELOPMENT_TEAM = JKLJ58J33Q;
                                FRAMEWORK_SEARCH_PATHS = (
                                        "$(inherited)",
                                CODE_SIGN_ENTITLEMENTS = ShenYin/PLAYBOY.entitlements;
                                CODE_SIGN_IDENTITY = "Apple Development";
                                CODE_SIGN_STYLE = Automatic;
-                               CURRENT_PROJECT_VERSION = 202602271457;
+                               CURRENT_PROJECT_VERSION = 202603021003;
                                DEVELOPMENT_TEAM = JKLJ58J33Q;
                                FRAMEWORK_SEARCH_PATHS = (
                                        "$(inherited)",
index 10e15a0..f87b6cc 100644 (file)
@@ -83,3 +83,17 @@ class BackgroundCache{
         return nil
     }
 }
+class RecordTipSaveCache{
+    static let key = "AutoRecordCache"
+    static func save(value:Bool){
+        let obj = value ? "1":"0"
+        UserDefaults.standard.set(obj, forKey: key)
+        UserDefaults.standard.synchronize()
+    }
+    static func get()->Bool{
+        if let value = UserDefaults.standard.value(forKey: key),let text = value as? String {
+            return text == "1"
+        }
+        return true
+    }
+}
diff --git a/ShenYin/ShenYin/Sdk/DcSdk/VC/DcCallingRecordVC.swift b/ShenYin/ShenYin/Sdk/DcSdk/VC/DcCallingRecordVC.swift
deleted file mode 100644 (file)
index 42da6aa..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-//
-////
-////  DcCallingRecordVC.swift
-////  ShenYin
-////
-////  Created by liangshi on 2025/8/6.
-////
-//
-//import UIKit
-//import AVFAudio
-//class DcCallingRecordVC:BaseVC{
-//    let toolBar = FieldRecordBar()
-//    let textView = UITextView()
-//    let rhythView = RhythView()
-//    
-//    var autoStart = false
-//    var needSave = true
-//    var bgEnter = false//是否是APP在后台进入这个页面的
-//    
-//    init(autoStart :Bool = false) {
-//        self.autoStart = autoStart
-//        super.init()
-//        bgEnter = App.shared.isInBackground
-//        setupSdk()
-//    }
-//    
-//    override func viewDidLoad() {
-//        super.viewDidLoad()
-//    }
-//    override func setupViews() {
-//        navBar.title = "通话录音".l10n
-//        navBar.backgroundColor = .white
-//        
-//        toolBar.do { v in
-//            v.delegate = self
-//            v.hasRightItem = false
-//            v.leftItem.language = AiLanguageCache.get(type: .thly) ?? .chinse
-//        }
-//        
-//        view.backgroundColor = .white
-//        
-//        textView.do { v in
-//            v.backgroundColor = .white
-//            v.isEditable = false
-//            v.font = .regular(14)
-//            v.text = ""
-//            v.textColor = .color(.first)
-//            v.contentInset = UIEdgeInsets(top: 0, left: 18, bottom: 0, right: 18)
-//        }
-//        view.addSubviews([rhythView,textView,toolBar])
-//        
-//    }
-//    override func setupLayout() {
-//        rhythView.snp.makeConstraints { make in
-//            make.width.centerX.equalToSuperview()
-//            make.top.equalToSuperview().inset(kNavBtm)
-//            make.height.equalTo(110)
-//        }
-//        toolBar.snp.makeConstraints { make in
-//            make.width.centerX.equalToSuperview()
-//            make.height.equalTo(120)
-//            make.bottom.equalToSuperview().inset(20)
-//        }
-//        textView.snp.makeConstraints { make in
-//            make.top.equalTo(rhythView.snp.bottom)
-//            make.left.right.equalToSuperview()
-//            make.bottom.equalTo(toolBar.snp.top)
-//        }
-//    }
-//    override func setupData() {
-//        if bgEnter {
-//            textView.text = DcThly.shared.recordText
-//        }
-//    }
-//    func setupSdk(){
-//        DcThly.shared.recordFinish = {[weak self] path in
-//            guard let self = self else { return  }
-//            if !needSave {
-//                return
-//            }
-//            let v = PopTextField()
-//            v.show()
-//            v.cancelTap = {
-//                App.shared.popPage()
-//            }
-//            v.okTap = { [weak self]  text in
-//                guard let self = self else{return}
-//                
-//                let model = RecordDetailModel()
-//                model.type = .phone
-//                model.from = toolBar.leftItem.language
-//                model.to = .english
-//                model.name = text
-//                model.path = path
-//                model.duration = YLToos.getDuration(model.path)
-//                model.origin = textView.text
-//                model.translate = ""
-//                App.shared.popPage(animated: false)
-//                App.shared.goToPage(RecordDetailVC(record: model))
-//            }
-//        }
-//        DcThly.shared.recordNeedReloadData = {[weak self] text in
-//            guard let self = self else { return  }
-//            textView.text = text
-//            
-//            let range = NSMakeRange(textView.text.count - 1, 1)
-//            textView.scrollRangeToVisible(range)
-//        }
-//        //需要完善
-////        DcThly.shared.callRecordAutoFinish = {[weak self]  in
-////            guard let self = self else { return  }
-////            stopAction()
-////        }
-//        DcThly.shared.callRecordNotOnCall = {[weak self]  in
-//            guard let self = self else { return  }
-//            YLprogressHUD.showAutoHiden("未处于通话状态".l10n)
-//            rhythView.reset()
-//            toolBar.recordBtn.isSelected = false
-//            toolBar.leftItem.alpha = 1
-//        }
-//        
-//        if autoStart{
-//            startRecord()
-//        }
-//    }
-//    
-//    override func viewDidAppear(_ animated: Bool) {
-//        super.viewDidAppear(animated)
-//        navigationController?.fd_fullscreenPopGestureRecognizer?.isEnabled = false
-//    }
-//    override func viewDidDisappear(_ animated: Bool) {
-//        super.viewDidDisappear(animated)
-//        navigationController?.fd_fullscreenPopGestureRecognizer?.isEnabled = true
-//    }
-//    override func navleftViewTapped() {
-//        if toolBar.recordBtn.isSelected {
-//            CustomAlert.showWith(title: "提示".l10n, messgage: "当前正在录音,确定放弃当前录音吗?".l10n, cancelCallback: {}) {[unowned self] in
-//                self.rhythView.stopTimer()
-//                self.needSave = false
-//                DcThly.shared.recordStop()
-//                self.navigationController?.popViewController(animated: true)
-//            }
-//        }
-//        else{
-//            super.navleftViewTapped()
-//        }
-//    }
-//    func startRecord(){
-//        toolBar.recordBtnAction()
-//    }
-//    func stopRecord(){
-//        toolBar.recordBtnAction()
-//    }
-//}
-//
-//extension DcCallingRecordVC:FieldRecordBarDelegate{
-//    func fieldRecordBar(_ bar: FieldRecordBar, languageChange language: CCAiLanguage) {
-//        DcThly.shared.setRecordLanage(language)
-//        AiLanguageCache.save(type: .thly, lan: language)
-//    }
-//    
-//    func fieldRecordBar(_ bar: FieldRecordBar, stateChange state: RecordSate) {
-//        if state == .start {
-//            textView.text = ""
-//            rhythView.startTimer()
-//            DcThly.shared.recordStart()
-//        }
-//        else if state == .stop{
-//            stopAction()
-//        }
-//    }
-//    func stopAction(){
-//        rhythView.stopTimer()
-//        DcThly.shared.recordStop()
-//        toolBar.startAnimating()
-//    }
-//}
index 6f78a3f..d36b7c5 100644 (file)
@@ -134,14 +134,19 @@ class DcStereoCallVC:BaseVC{
             if !needSave {
                 return
             }
-            let v = PopTextField()
-            v.show()
-            v.cancelTap = {
-                App.shared.popPage()
+            if RecordTipSaveCache.get(){
+                let v = PopTextField()
+                v.show()
+                v.cancelTap = {
+                    App.shared.popPage()
+                }
+                v.okTap = { [weak self]  text in
+                    guard let self = self else{return}
+                    gotoDetail(fileName: text, wavPath: path, language: toolBar.leftItem.language)
+                }
             }
-            v.okTap = { [weak self]  text in
-                guard let self = self else{return}
-                gotoDetail(fileName: text, wavPath: path, language: toolBar.leftItem.language)
+            else{
+                gotoDetail(fileName: Date().format(.full3), wavPath: path, language: toolBar.leftItem.language)
             }
         }
         DcStereo.shared.stereoNeedReloadData = {[weak self] (text,index) in
index ea5d862..fbba46f 100644 (file)
@@ -88,19 +88,36 @@ class DcTctyVC:BaseVC{
         sdk.filePathCallback = { [weak self] path in
             guard let self = self else{return}
             guard let wavPath = DCFolder.recordFileResave(srcPath: path) else{return}
-            let v = PopTextField()
-            v.show()
-            v.cancelTap = {
-                App.shared.popPage()
-            }
-            v.okTap = { [weak self]  text in
-                guard let self = self else{return}
+            
+            if RecordTipSaveCache.get(){
                 
+                let v = PopTextField()
+                v.show()
+                v.cancelTap = {
+                    App.shared.popPage()
+                }
+                v.okTap = { [weak self]  text in
+                    guard let self = self else{return}
+                    
+                    let model = RecordDetailModel()
+                    model.type = .translate
+                    model.from = toolBar.leftItem.language
+                    model.to = toolBar.rightItem.language
+                    model.name = text
+                    model.path = wavPath
+                    model.duration = YLToos.getDuration(model.path)
+                    model.origin = textView.text ?? ""
+                    model.translate = translateTextView.text ?? ""
+                    App.shared.popPage(animated: false)
+                    App.shared.goToPage(RecordDetailVC(record: model))
+                }
+            }
+            else{
                 let model = RecordDetailModel()
                 model.type = .translate
                 model.from = toolBar.leftItem.language
                 model.to = toolBar.rightItem.language
-                model.name = text
+                model.name = Date().format(.full3)
                 model.path = wavPath
                 model.duration = YLToos.getDuration(model.path)
                 model.origin = textView.text ?? ""
index 07c055c..667fbd4 100644 (file)
@@ -78,25 +78,43 @@ class DcXclyVC:BaseVC{
             if !needSave {
                 return
             }
-            let v = PopTextField()
-            v.show()
-            v.cancelTap = {
-                App.shared.popPage()
+            Logger.debug("path ===", path)
+            if RecordTipSaveCache.get(){
+                let v = PopTextField()
+                v.show()
+                v.cancelTap = {
+                    App.shared.popPage()
+                }
+                v.okTap = { [weak self]  text in
+                    guard let self = self else{return}
+                    Logger.debug("111111 ===",textView.text ?? "")
+                    let model = RecordDetailModel()
+                    model.type = .present
+                    model.from = toolBar.leftItem.language
+                    model.to = .english
+                    model.name = text
+                    model.path = path
+                    model.duration = YLToos.getDuration(model.path)
+                    model.origin = textView.text
+                    model.translate = ""
+                    App.shared.popPage(animated: false)
+                    App.shared.goToPage(RecordDetailVC(record: model))
+                }
             }
-            v.okTap = { [weak self]  text in
-                guard let self = self else{return}
-                Logger.debug("111111 ===",textView.text ?? "")
-                let model = RecordDetailModel()
-                model.type = .present
-                model.from = toolBar.leftItem.language
-                model.to = .english
-                model.name = text
-                model.path = path
-                model.duration = YLToos.getDuration(model.path)
-                model.origin = textView.text
-                model.translate = ""
-                App.shared.popPage(animated: false)
-                App.shared.goToPage(RecordDetailVC(record: model))
+            else{
+                    let model = RecordDetailModel()
+                    model.type = .present
+                    model.from = self.toolBar.leftItem.language
+                    model.to = .english
+                    model.name = Date().format(.full3)
+                    model.path = path
+                    model.duration = YLToos.getDuration(model.path)
+                    model.origin = self.textView.text
+                    model.translate = ""
+                    App.shared.popPage(animated: false)
+                    App.shared.goToPage(RecordDetailVC(record: model))
+
+
             }
         }
         DcXcly.shared.recordNeedReloadData = {[weak self] text in
index 8bf323c..39a1cc6 100644 (file)
@@ -69,7 +69,7 @@ extension OpusTools{
                 finished(nil)
             }
         }
-        return finished(nil)
+//        return finished(nil)
     }
     static func opusTowav(_ opusPath:String,finished:@escaping ((String?)->Void)){
         let format = JLOpusFormat.defaultFormats()
@@ -90,7 +90,7 @@ extension OpusTools{
                 finished(nil)
             }
         }
-        return finished(nil)
+//        return finished(nil)
     }
     
     static func pcmTowav(_ pcmPath:String,sampleRate:UInt32,channels:UInt16)->String?{
index 9e98d2f..2e51bc0 100644 (file)
@@ -83,19 +83,34 @@ class JoyCallingRecordVC:BaseVC{
             if !needSave {
                 return
             }
-            let v = PopTextField()
-            v.show()
-            v.cancelTap = {
-                App.shared.popPage()
+            if RecordTipSaveCache.get(){
+                let v = PopTextField()
+                v.show()
+                v.cancelTap = {
+                    App.shared.popPage()
+                }
+                v.okTap = { [weak self]  text in
+                    guard let self = self else{return}
+                    
+                    let model = RecordDetailModel()
+                    model.type = .phone
+                    model.from = toolBar.leftItem.language
+                    model.to = .english
+                    model.name = text
+                    model.path = path
+                    model.duration = YLToos.getDuration(model.path)
+                    model.origin = textView.text
+                    model.translate = ""
+                    App.shared.popPage(animated: false)
+                    App.shared.goToPage(RecordDetailVC(record: model))
+                }
             }
-            v.okTap = { [weak self]  text in
-                guard let self = self else{return}
-                
+            else{
                 let model = RecordDetailModel()
                 model.type = .phone
                 model.from = toolBar.leftItem.language
                 model.to = .english
-                model.name = text
+                model.name = Date().format(.full3)
                 model.path = path
                 model.duration = YLToos.getDuration(model.path)
                 model.origin = textView.text
index dba5d8d..7c7665b 100644 (file)
@@ -139,14 +139,19 @@ class JoyStereoCallVC:BaseVC{
             if !needSave {
                 return
             }
-            let v = PopTextField()
-            v.show()
-            v.cancelTap = {
-                App.shared.popPage()
+            if RecordTipSaveCache.get(){
+                let v = PopTextField()
+                v.show()
+                v.cancelTap = {
+                    App.shared.popPage()
+                }
+                v.okTap = { [weak self]  text in
+                    guard let self = self else{return}
+                    gotoDetail(fileName: text, wavPath: path, language: toolBar.leftItem.language)
+                }
             }
-            v.okTap = { [weak self]  text in
-                guard let self = self else{return}
-                gotoDetail(fileName: text, wavPath: path, language: toolBar.leftItem.language)
+            else{
+                gotoDetail(fileName: Date().format(.full3), wavPath: path, language: toolBar.leftItem.language)
             }
         }
         JoySdkManager.shared.callRecord.stereoNeedReloadData = {[weak self] (text,index) in
index 8b3fa25..207d46b 100644 (file)
@@ -89,19 +89,34 @@ class JoyTctyVC:BaseVC{
                 return
             }
             guard let wavPath = DCFolder.recordFileResave(srcPath: path) else{return}
-            let v = PopTextField()
-            v.show()
-            v.cancelTap = {
-                App.shared.popPage()
+            if RecordTipSaveCache.get(){
+                let v = PopTextField()
+                v.show()
+                v.cancelTap = {
+                    App.shared.popPage()
+                }
+                v.okTap = { [weak self]  text in
+                    guard let self = self else{return}
+                    
+                    let model = RecordDetailModel()
+                    model.type = .translate
+                    model.from = toolBar.leftItem.language
+                    model.to = toolBar.rightItem.language
+                    model.name = text
+                    model.path = wavPath
+                    model.duration = YLToos.getDuration(model.path)
+                    model.origin = textView.text ?? ""
+                    model.translate = translateTextView.text ?? ""
+                    App.shared.popPage(animated: false)
+                    App.shared.goToPage(RecordDetailVC(record: model))
+                }
             }
-            v.okTap = { [weak self]  text in
-                guard let self = self else{return}
-                
+            else{
                 let model = RecordDetailModel()
                 model.type = .translate
                 model.from = toolBar.leftItem.language
                 model.to = toolBar.rightItem.language
-                model.name = text
+                model.name = Date().format(.full3)
                 model.path = wavPath
                 model.duration = YLToos.getDuration(model.path)
                 model.origin = textView.text ?? ""
index f583f0b..7d4c30a 100644 (file)
@@ -77,19 +77,34 @@ class JoyXclyVC:BaseVC{
                 }
                 return
             }
-            let v = PopTextField()
-            v.show()
-            v.cancelTap = {
-                App.shared.popPage()
+            if RecordTipSaveCache.get(){
+                let v = PopTextField()
+                v.show()
+                v.cancelTap = {
+                    App.shared.popPage()
+                }
+                v.okTap = { [weak self]  text in
+                    guard let self = self else{return}
+                    Logger.debug("111111 ===",textView.text ?? "")
+                    let model = RecordDetailModel()
+                    model.type = .present
+                    model.from = toolBar.leftItem.language
+                    model.to = .english
+                    model.name = text
+                    model.path = path
+                    model.duration = YLToos.getDuration(model.path)
+                    model.origin = textView.text
+                    model.translate = ""
+                    App.shared.popPage(animated: false)
+                    App.shared.goToPage(RecordDetailVC(record: model))
+                }
             }
-            v.okTap = { [weak self]  text in
-                guard let self = self else{return}
-                Logger.debug("111111 ===",textView.text ?? "")
+            else{
                 let model = RecordDetailModel()
                 model.type = .present
                 model.from = toolBar.leftItem.language
                 model.to = .english
-                model.name = text
+                model.name = Date().format(.full3)
                 model.path = path
                 model.duration = YLToos.getDuration(model.path)
                 model.origin = textView.text
index ac61392..233009e 100644 (file)
@@ -7,8 +7,9 @@
 
 import UIKit
 class MoreSetVC: BaseVC{
-    let tableView = UITableView(frame: .zero, style: .plain)
-    let list:[CustomCellType] = [.system]
+    let bgView = UIView()
+   private let switchView = SwitchCell()
+    private let sysCell =  MoreCell()
 
     let switchBtn = CustomButton()
     let logoutBtn = CustomButton()
@@ -20,32 +21,40 @@ class MoreSetVC: BaseVC{
     }
     override func setupViews() {
         self.navBar.title = "更多设置".l10n
-        tableView.do { v in
-            v.backgroundColor = .color(.bgColor)
-            v.delegate = self
-            v.dataSource = self
-            v.rowHeight = 52
-            v.sectionHeaderHeight = 52
-            v.separatorStyle = .none
-            v.register(CustomCell.self, forCellReuseIdentifier: CustomCell.reuseID)
-            v.tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: kScreenHei, height: 20))
-            v.bounces = false
+        
+        bgView.do { v in
+            v.yc.setCornerRadius(12)
+            v.backgroundColor = .color(.cellBg)
+        }
+        sysCell.do { v in
+            v.yc.addTap(target: self, action: #selector(sysAction))
         }
         
         switchBtn.set(title: "切换账号".l10n,style: .theme3, target: self, action: #selector(swictAction))
         logoutBtn.set(title: "退出登录".l10n,style: .theme3, target: self, action: #selector(logoutAction))
         deactivateBtn.set(title: "注销账号".l10n,style: .theme3, target: self, action: #selector(deactivateAction))
         
-        view.addSubviews([tableView,switchBtn,logoutBtn,deactivateBtn])
-        
+        view.addSubviews([bgView,switchBtn,logoutBtn,deactivateBtn])
+        bgView.addSubviews([switchView,sysCell])
         
     }
     override func setupLayout() {
-        tableView.snp.makeConstraints { make in
+        bgView.snp.makeConstraints { make in
+            make.left.right.equalToSuperview().inset(18)
+            make.top.equalToSuperview().inset(kNavBtm + 10)
+            make.height.equalTo(130)
+        }
+        switchView.snp.makeConstraints { make in
             make.left.right.equalToSuperview()
-            make.top.equalToSuperview().inset(kNavBtm)
-            make.height.equalTo(124)
+            make.top.equalToSuperview()
+            make.height.equalTo(66)
         }
+        sysCell.snp.makeConstraints { make in
+            make.left.right.equalToSuperview()
+            make.top.equalTo(switchView.snp.bottom)
+            make.height.equalTo(60)
+        }
+        
         deactivateBtn.snp.makeConstraints { make in
             make.bottom.equalToSuperview().inset(kSafeBtm + 10)
             make.left.right.equalToSuperview().inset(18)
@@ -88,7 +97,7 @@ class MoreSetVC: BaseVC{
     }
     
     //MARK: 跳转到APP系统设置权限界面
-     func jumpToSystemPrivacySetting() {
+     @objc func sysAction() {
         guard let appSetting = URL(string: UIApplication.openSettingsURLString) else {
             return
         }
@@ -100,38 +109,103 @@ class MoreSetVC: BaseVC{
     }
 }
 
-extension MoreSetVC:UITableViewDelegate,UITableViewDataSource {
-    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        return list.count
+
+
+fileprivate class SwitchCell: BaseView {
+    let bgView = UIView()
+    let titleLabel = UILabel()
+    let detailLabel = UILabel()
+    let iSwitch = UISwitch()
+
+    override func setupViews() {
+        addSubview(bgView)
+        bgView.addSubviews([titleLabel,detailLabel,iSwitch])
+        
+        bgView.do { v in
+            v.backgroundColor = .color(.cellBg)
+        }
+        titleLabel.do { (v) in
+            v.textColor = .color(.first)
+            v.font = .bold(14)
+            v.textAlignment = .left
+            v.text = "录音结束后提示重命名".l10n
+        }
+        detailLabel.do { (v) in
+            v.textColor = .color(.secondary)
+            v.font = .regular(10)
+            v.textAlignment = .left
+            v.text = "关闭后自动命名并保存".l10n
+        }
+        iSwitch.do { v in
+            v.onTintColor = .color(.theme)
+            v.addTarget(self, action: #selector(swicthAction), for: .valueChanged)
+            v.isOn = RecordTipSaveCache.get()
+        }
     }
-    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
-        let cell = CustomCell.cell(withTableView: tableView, indexPath: indexPath)
-        cell.titleLabel.text = list[indexPath.row].title
-        let rect = CGRect(x: 0, y: 0, width: kScreenWid - 36, height: 52)
-        if indexPath.row == 0 {
-            cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 12, height: 12))
+    
+    override func setupLayout() {
+        bgView.snp.makeConstraints { (m) in
+            m.left.right.equalToSuperview().inset(16)
+            m.top.equalToSuperview()
+            m.bottom.equalToSuperview()
+        }
+        titleLabel.snp.makeConstraints { (m) in
+            m.top.equalToSuperview().inset(16)
+            m.left.equalToSuperview()
+        }
+        detailLabel.snp.makeConstraints { (m) in
+            m.bottom.equalToSuperview().inset(16)
+            m.left.equalToSuperview()
         }
-        else if indexPath.row == list.count - 1{
-            cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.bottomLeft,.bottomRight], cornerRadii: CGSize(width: 12, height: 12))
+        iSwitch.snp.makeConstraints { (m) in
+            m.right.equalToSuperview()
+            m.centerY.equalToSuperview()
         }
-        else{
-            cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 0, height: 0))
+    }
+  
+    @objc func swicthAction(){
+        RecordTipSaveCache.save(value: iSwitch.isOn)
+    }
+}
+fileprivate class MoreCell: BaseView {
+    let bgView = UIView()
+    let titleLabel = UILabel()
+    let nextIcon = UIImageView()
+
+
+    override func setupViews() {
+        addSubview(bgView)
+        bgView.addSubviews([titleLabel,nextIcon])
+
+        bgView.do { v in
+            v.backgroundColor = .color(.cellBg)
         }
-        if list.count == 1 {
-            cell.bgView.yc.setCorners(withRoundedRect: rect, roundingCorners: [.allCorners], cornerRadii: CGSize(width: 12, height: 12))
+        titleLabel.do { (v) in
+            v.text = "系统权限管理".l10n
+            v.textColor = .color(.first)
+            v.font = .bold(14)
+            v.textAlignment = .left
         }
-        return cell
+
+        nextIcon.image = UIImage(named: "arrow_next")
     }
-    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
-        let data = list[indexPath.row]
-        switch data {
-        case .system:
-            jumpToSystemPrivacySetting()
-        case .notice:
-//            App.shared.goToPage(SetPhoneVC())
-            break
-        default:
-            break
+    
+    override func setupLayout() {
+        bgView.snp.makeConstraints { (m) in
+            m.left.right.equalToSuperview().inset(16)
+            m.top.equalToSuperview()
+            m.bottom.equalToSuperview()
+        }
+        titleLabel.snp.makeConstraints { (m) in
+            m.centerY.equalToSuperview()
+            m.left.equalToSuperview()
+            m.height.equalToSuperview()
+        }
+        nextIcon.snp.makeConstraints { (m) in
+            m.width.equalTo(8)
+            m.height.equalTo(12)
+            m.right.equalToSuperview()
+            m.centerY.equalToSuperview()
         }
     }
 }
index ef71e3d..26c0210 100644 (file)
@@ -558,5 +558,7 @@ let chineseMap:[String:String] =
     "自定义时间":"",
     
     "眼镜" : "",
+    "录音结束后提示重命名":"",
+    "关闭后自动命名并保存":"",
 ]
 
index 6d2bd92..278df5f 100644 (file)
@@ -556,4 +556,7 @@ let englishMap:[String:String] =
 "自定义时间":"Custom Time",
 
 "眼镜" : "glasses",
+"录音结束后提示重命名":"Prompt to rename after the recording ends",
+"关闭后自动命名并保存":"Automatically name and save after closing",
+
  ]