From: liangzhenying <867174124@qq.com> Date: Mon, 2 Mar 2026 02:17:54 +0000 (+0800) Subject: 加了录音自动保存功能 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=6e14f2e40c9c9fe4dd1b3e7a29afeeb3b9a898f9;p=mirrors%2FShenYin.git 加了录音自动保存功能 --- diff --git a/ShenYin/ShenYin.xcodeproj/project.pbxproj b/ShenYin/ShenYin.xcodeproj/project.pbxproj index c69caea..69d9ccb 100644 --- a/ShenYin/ShenYin.xcodeproj/project.pbxproj +++ b/ShenYin/ShenYin.xcodeproj/project.pbxproj @@ -177,7 +177,6 @@ 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, @@ -506,7 +505,6 @@ 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, @@ -1531,7 +1529,7 @@ 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)", @@ -1587,7 +1585,7 @@ 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)", diff --git a/ShenYin/ShenYin/Cache/TipsCache.swift b/ShenYin/ShenYin/Cache/TipsCache.swift index 10e15a0..f87b6cc 100644 --- a/ShenYin/ShenYin/Cache/TipsCache.swift +++ b/ShenYin/ShenYin/Cache/TipsCache.swift @@ -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 index 42da6aa..0000000 --- a/ShenYin/ShenYin/Sdk/DcSdk/VC/DcCallingRecordVC.swift +++ /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() -// } -//} diff --git a/ShenYin/ShenYin/Sdk/DcSdk/VC/DcStereoCallVC.swift b/ShenYin/ShenYin/Sdk/DcSdk/VC/DcStereoCallVC.swift index 6f78a3f..d36b7c5 100644 --- a/ShenYin/ShenYin/Sdk/DcSdk/VC/DcStereoCallVC.swift +++ b/ShenYin/ShenYin/Sdk/DcSdk/VC/DcStereoCallVC.swift @@ -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 diff --git a/ShenYin/ShenYin/Sdk/DcSdk/VC/DcTctyVC.swift b/ShenYin/ShenYin/Sdk/DcSdk/VC/DcTctyVC.swift index ea5d862..fbba46f 100644 --- a/ShenYin/ShenYin/Sdk/DcSdk/VC/DcTctyVC.swift +++ b/ShenYin/ShenYin/Sdk/DcSdk/VC/DcTctyVC.swift @@ -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 ?? "" diff --git a/ShenYin/ShenYin/Sdk/DcSdk/VC/DcXclyVC.swift b/ShenYin/ShenYin/Sdk/DcSdk/VC/DcXclyVC.swift index 07c055c..667fbd4 100644 --- a/ShenYin/ShenYin/Sdk/DcSdk/VC/DcXclyVC.swift +++ b/ShenYin/ShenYin/Sdk/DcSdk/VC/DcXclyVC.swift @@ -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 diff --git a/ShenYin/ShenYin/Sdk/DcSdk/tool/OpusTools.swift b/ShenYin/ShenYin/Sdk/DcSdk/tool/OpusTools.swift index 8bf323c..39a1cc6 100644 --- a/ShenYin/ShenYin/Sdk/DcSdk/tool/OpusTools.swift +++ b/ShenYin/ShenYin/Sdk/DcSdk/tool/OpusTools.swift @@ -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?{ diff --git a/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyCallingRecordVC.swift b/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyCallingRecordVC.swift index 9e98d2f..2e51bc0 100644 --- a/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyCallingRecordVC.swift +++ b/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyCallingRecordVC.swift @@ -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 diff --git a/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyStereoCallVC.swift b/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyStereoCallVC.swift index dba5d8d..7c7665b 100644 --- a/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyStereoCallVC.swift +++ b/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyStereoCallVC.swift @@ -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 diff --git a/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyTctyVC.swift b/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyTctyVC.swift index 8b3fa25..207d46b 100644 --- a/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyTctyVC.swift +++ b/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyTctyVC.swift @@ -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 ?? "" diff --git a/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyXclyVC.swift b/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyXclyVC.swift index f583f0b..7d4c30a 100644 --- a/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyXclyVC.swift +++ b/ShenYin/ShenYin/Sdk/JoySdk/VC/JoyXclyVC.swift @@ -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 diff --git a/ShenYin/ShenYin/UI/Mine/MoreSetVC.swift b/ShenYin/ShenYin/UI/Mine/MoreSetVC.swift index ac61392..233009e 100644 --- a/ShenYin/ShenYin/UI/Mine/MoreSetVC.swift +++ b/ShenYin/ShenYin/UI/Mine/MoreSetVC.swift @@ -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() } } } diff --git a/ShenYin/ShenYin/lan/chinese.swift b/ShenYin/ShenYin/lan/chinese.swift index ef71e3d..26c0210 100644 --- a/ShenYin/ShenYin/lan/chinese.swift +++ b/ShenYin/ShenYin/lan/chinese.swift @@ -558,5 +558,7 @@ let chineseMap:[String:String] = "自定义时间":"", "眼镜" : "", + "录音结束后提示重命名":"", + "关闭后自动命名并保存":"", ] diff --git a/ShenYin/ShenYin/lan/english.swift b/ShenYin/ShenYin/lan/english.swift index 6d2bd92..278df5f 100644 --- a/ShenYin/ShenYin/lan/english.swift +++ b/ShenYin/ShenYin/lan/english.swift @@ -556,4 +556,7 @@ let englishMap:[String:String] = "自定义时间":"Custom Time", "眼镜" : "glasses", +"录音结束后提示重命名":"Prompt to rename after the recording ends", +"关闭后自动命名并保存":"Automatically name and save after closing", + ]