From: liangzhenying <867174124@qq.com> Date: Sat, 13 Sep 2025 03:26:16 +0000 (+0800) Subject: 改了文本翻译UI X-Git-Tag: 1.0.2~100 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=8bde82a274c4dfef5c351774b9061260d73768f0;p=mirrors%2FShenYin.git 改了文本翻译UI --- diff --git a/ShenYin/ShenYin/AppLaunch.swift b/ShenYin/ShenYin/AppLaunch.swift index eb00957..d021252 100644 --- a/ShenYin/ShenYin/AppLaunch.swift +++ b/ShenYin/ShenYin/AppLaunch.swift @@ -20,7 +20,7 @@ class AppLaunch:NSObject{ if #available(iOS 15.0, *) { UITableView.appearance().sectionHeaderTopPadding = 0 } - IQKeyboardManager.shared.enableAutoToolbar = true + IQKeyboardManager.shared.enableAutoToolbar = false IQKeyboardManager.shared.isEnabled = true IQKeyboardManager.shared.resignOnTouchOutside = true } diff --git a/ShenYin/ShenYin/Assets.xcassets/home/copy_icon.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/home/copy_icon.imageset/Contents.json new file mode 100644 index 0000000..617c769 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/home/copy_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "复制_1@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "复制_1@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git "a/ShenYin/ShenYin/Assets.xcassets/home/copy_icon.imageset/\345\244\215\345\210\266_1@2x.png" "b/ShenYin/ShenYin/Assets.xcassets/home/copy_icon.imageset/\345\244\215\345\210\266_1@2x.png" new file mode 100644 index 0000000..84d7017 Binary files /dev/null and "b/ShenYin/ShenYin/Assets.xcassets/home/copy_icon.imageset/\345\244\215\345\210\266_1@2x.png" differ diff --git "a/ShenYin/ShenYin/Assets.xcassets/home/copy_icon.imageset/\345\244\215\345\210\266_1@3x.png" "b/ShenYin/ShenYin/Assets.xcassets/home/copy_icon.imageset/\345\244\215\345\210\266_1@3x.png" new file mode 100644 index 0000000..7b06553 Binary files /dev/null and "b/ShenYin/ShenYin/Assets.xcassets/home/copy_icon.imageset/\345\244\215\345\210\266_1@3x.png" differ diff --git a/ShenYin/ShenYin/JoySdkManager.swift b/ShenYin/ShenYin/JoySdkManager.swift index 019f7a4..ff76bd3 100644 --- a/ShenYin/ShenYin/JoySdkManager.swift +++ b/ShenYin/ShenYin/JoySdkManager.swift @@ -16,7 +16,7 @@ class JoySdkManager:NSObject{ //MARK: 初始化SDK JoyGemAIManager.shared().initSdk() //MARK: 配置日志类型 - JoyGemAIManager.shared().setLogMode(JoyGemLogMode.all) + JoyGemAIManager.shared().setLogMode(JoyGemLogMode.close) let fileManager = FileManager.default diff --git a/ShenYin/ShenYin/SceneDelegate.swift b/ShenYin/ShenYin/SceneDelegate.swift index c891392..593c36c 100644 --- a/ShenYin/ShenYin/SceneDelegate.swift +++ b/ShenYin/ShenYin/SceneDelegate.swift @@ -20,7 +20,7 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { App.shared.window = window window?.rootViewController = BaseTC() - window?.rootViewController = UINavigationController(rootViewController: BleScanVC()) +// window?.rootViewController = UINavigationController(rootViewController: TextTranlateVC()) AppLaunch.start() } diff --git a/ShenYin/ShenYin/UI/Home/Chat/ChatRecordBar.swift b/ShenYin/ShenYin/UI/Home/Chat/ChatRecordBar.swift index 353e36e..2afde8a 100644 --- a/ShenYin/ShenYin/UI/Home/Chat/ChatRecordBar.swift +++ b/ShenYin/ShenYin/UI/Home/Chat/ChatRecordBar.swift @@ -11,9 +11,15 @@ } class ChatRecordBar:BaseView{ - var recordBtn = UIButton(type: .custom) + private var recordBtn = UIButton(type: .custom) weak var delegate:ChatRecordBarDelegate? + var isRecord:Bool = false{ + didSet{ + recordBtn.isSelected = isRecord + } + } + override func setupViews() { recordBtn.backgroundColor = .blue recordBtn.setTitle("开始录音", for: .normal) diff --git a/ShenYin/ShenYin/UI/Home/Chat/ChatVC.swift b/ShenYin/ShenYin/UI/Home/Chat/ChatVC.swift index bd3982b..93d5cf2 100644 --- a/ShenYin/ShenYin/UI/Home/Chat/ChatVC.swift +++ b/ShenYin/ShenYin/UI/Home/Chat/ChatVC.swift @@ -90,7 +90,7 @@ class ChatVC:BaseVC{ } override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) { if (keyPath == "isActive") { - var isOpen = change?[NSKeyValueChangeKey.newKey] as? Bool + let isOpen = change?[NSKeyValueChangeKey.newKey] as? Bool if (isOpen == true) { YLprogressHUD.showAutoHiden("AI对话开启") } else { @@ -169,8 +169,10 @@ extension ChatVC:UITableViewDelegate,UITableViewDataSource { extension ChatVC : JoyGemChatManagerDelegate { func chatManager(_ manager: JoyGemChatManager, stateChange code: JoyGemStateCode) { + Logger.debug("事shi ",code) switch code { case .startRecord: + toolBar.isRecord = true if (isTtsPlaying) { isTtsPlaying = false PcmSound.sharedInstance().cleanup() @@ -186,15 +188,18 @@ extension ChatVC : JoyGemChatManagerDelegate { // stateLabel.text = "正在录音" break case .stopRecord: -// stateLabel.text = "操作耳机" + toolBar.isRecord = false break default: break } } + func chatManager(_ manager: JoyGemChatManager, eventUpdate event: JoyGemChatEvent) { + Logger.debug("事件改变",event) + } func chatManager(_ manager: JoyGemChatManager, onError code: JoyGemErrorCode) { - + Logger.debug("收到错误",code) } func chatManager(_ manager: JoyGemChatManager, audioData data: Data?, finish isFinish: Bool) { @@ -247,18 +252,13 @@ extension ChatVC : JoyGemChatManagerDelegate { tableView.reloadData() scrollToBottom() } - - } - - func chatManagerStopped(_ manager: JoyGemChatManager) { - } } extension ChatVC : PcmSoundDelegate { func remaining(_ frames: UInt) { - print("[frame:\(frames)]"); + Logger.debug("[frame:\(frames)]"); if (frames == 0) { JoyGemChatManager.shared().playAudioEnd() } diff --git a/ShenYin/ShenYin/UI/Home/textTranslateVC/TextTranslateVC.swift b/ShenYin/ShenYin/UI/Home/textTranslateVC/TextTranslateVC.swift index e478c32..8a9417f 100644 --- a/ShenYin/ShenYin/UI/Home/textTranslateVC/TextTranslateVC.swift +++ b/ShenYin/ShenYin/UI/Home/textTranslateVC/TextTranslateVC.swift @@ -8,6 +8,7 @@ import UIKit import JoyGemAI class TextTranlateVC:BaseVC{ + let scrollView = UIScrollView() let languageItem = LanguageSelectItem() let toolBar = SendToolBar() let tableView = UITableView(frame: CGRectZero, style: .plain) @@ -17,35 +18,47 @@ class TextTranlateVC:BaseVC{ } override func setupViews() { self.navBar.title = "文本翻译" - - tableView.keyboardDismissMode = .onDrag - tableView.backgroundColor = .clear - tableView.delegate = self - tableView.dataSource = self - tableView.estimatedRowHeight = 60 - tableView.separatorStyle = .none - tableView.register(TranslateCell.self, forCellReuseIdentifier: TranslateCell.reuseID) + view.addSubviews([languageItem,scrollView]) + scrollView.addSubviews([toolBar,tableView]) - toolBar.textField.text = "" - toolBar.delegate = self - view.addSubviews([toolBar,languageItem,tableView]) - + tableView.do { v in + v.keyboardDismissMode = .onDragWithAccessory + v.backgroundColor = .clear + v.delegate = self + v.dataSource = self + v.estimatedRowHeight = 60 + v.separatorStyle = .none + v.register(TranslateCell.self, forCellReuseIdentifier: TranslateCell.reuseID) + } + toolBar.do { v in + v.textField.text = "" + v.delegate = self + } } override func setupLayout() { languageItem.snp.makeConstraints { make in make.width.centerX.equalToSuperview() make.top.equalToSuperview().inset(kNavBtm) } + scrollView.snp.makeConstraints { make in + make.top.equalTo(languageItem.snp.bottom) + make.left.equalToSuperview() + make.height.equalTo(kScreenHei - kNavBtm - 56) + make.width.equalTo(kScreenWid) + } + tableView.snp.makeConstraints { make in + make.top.equalToSuperview() + make.left.equalToSuperview() + make.width.equalTo(kScreenWid) + make.height.equalTo(kScreenHei - kNavBtm - 56 - 82) + } + toolBar.snp.makeConstraints { make in make.width.centerX.equalToSuperview() make.height.equalTo(52) - make.bottom.equalToSuperview().inset(20) - } - tableView.snp.makeConstraints { make in - make.top.equalTo(languageItem.snp.bottom) - make.left.right.equalToSuperview() - make.bottom.equalTo(toolBar.snp.top) + make.top.equalTo(tableView.snp.bottom).offset(10) + make.bottom.equalToSuperview() } } func scrollToBottom(){ @@ -70,7 +83,7 @@ extension TextTranlateVC:UITableViewDelegate,UITableViewDataSource { } extension TextTranlateVC:SendToolBarDelegate{ func sendToolBar(_ toolBar: SendToolBar, _ text: String) { - toolBar.textField.resignFirstResponder() +// toolBar.textField.resignFirstResponder() dataList.append(TranslateCellModel(send: text,response: "")) tableView.reloadData() scrollToBottom() diff --git a/ShenYin/ShenYin/UI/Home/textTranslateVC/TranslateCell.swift b/ShenYin/ShenYin/UI/Home/textTranslateVC/TranslateCell.swift index b60a5c4..b687552 100644 --- a/ShenYin/ShenYin/UI/Home/textTranslateVC/TranslateCell.swift +++ b/ShenYin/ShenYin/UI/Home/textTranslateVC/TranslateCell.swift @@ -23,6 +23,7 @@ class TranslateCell:BaseTableViewCell{ let line = BrokenLineView() let originalLabel = UILabel() let translationLabel = UILabel() + let copyIcon = UIImageView() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) @@ -55,8 +56,12 @@ class TranslateCell:BaseTableViewCell{ line.do { v in // v.backgroundColor = .hexString("#93C6EC") } + copyIcon.do { v in + v.image = UIImage(named: "copy_icon") + v.yc.addTap(target: self, action: #selector(copyAction)) + } contentView.addSubview(bgView) - bgView.addSubviews([originalLabel,translationLabel,line]) + bgView.addSubviews([originalLabel,translationLabel,line,copyIcon]) // let brokenLineView = BrokenLineView(frame: CGRect(x: 0, y: 0, width: 300, height:100)) @@ -66,35 +71,44 @@ class TranslateCell:BaseTableViewCell{ override func setupLayout() { bgView.snp.makeConstraints { make in make.top.bottom.equalToSuperview().inset(10) - make.width.lessThanOrEqualTo(kScreenWid - 36) + make.width.lessThanOrEqualTo(kScreenWid - 58) make.left.equalToSuperview().inset(18) } originalLabel.snp.makeConstraints { make in make.top.equalToSuperview().inset(14) - make.left.equalToSuperview().inset(10) - make.width.lessThanOrEqualTo(kScreenWid - 60) + make.left.equalToSuperview().inset(12) + make.width.lessThanOrEqualTo(kScreenWid - 82) } line.snp.makeConstraints { make in - make.left.right.equalToSuperview().inset(10) - make.height.equalTo(10) - make.top.equalTo(originalLabel.snp.bottom).offset(18) + make.left.right.equalToSuperview().inset(12) + make.height.equalTo(1) + make.top.equalTo(originalLabel.snp.bottom).offset(15) } translationLabel.snp.makeConstraints { make in - make.top.equalTo(line.snp.bottom).offset(18) - make.left.equalToSuperview().inset(10) - make.width.lessThanOrEqualTo(kScreenWid - 60) + make.top.equalTo(line.snp.bottom).offset(15) + make.left.equalToSuperview().inset(12) + make.width.lessThanOrEqualTo(kScreenWid - 82) + make.bottom.equalToSuperview().inset(47) + } + copyIcon.snp.makeConstraints { make in + make.right.equalToSuperview().inset(12) + make.size.equalTo(24) make.bottom.equalToSuperview().inset(10) } } - var data:TranslateCellModel!{ - didSet{ - originalLabel.text = data.send - translationLabel.text = data.response - } + var data:TranslateCellModel!{ + didSet{ + originalLabel.text = data.send + translationLabel.text = data.response } + } + @objc func copyAction(){ + UIPasteboard.general.string = data.send + "\n" + data.response + YLprogressHUD.showAutoHiden("已拷贝") + } } diff --git a/ShenYin/ShenYin/UI/Mine/Login/Controller/RegisterVC.swift b/ShenYin/ShenYin/UI/Mine/Login/Controller/RegisterVC.swift index a319653..0bacf68 100644 --- a/ShenYin/ShenYin/UI/Mine/Login/Controller/RegisterVC.swift +++ b/ShenYin/ShenYin/UI/Mine/Login/Controller/RegisterVC.swift @@ -8,7 +8,7 @@ import UIKit class RegisterVC:BaseVC{ - + let scrollView = UIScrollView() let tipsLabel = UILabel() let bgView = UIView() let titleLabel = UILabel() @@ -63,19 +63,30 @@ class RegisterVC:BaseVC{ registerBtn.set(title: "注册",style: .theme1, target: self, action: #selector(registerAction)) loginBtn.set(title: "登录",style: .theme2, target: self, action: #selector(loginAction)) agreeView.isHidden = true - view.addSubviews([tipsLabel,bgView]) + + scrollView.backgroundColor = .clear + view.addSubview(scrollView) + scrollView.addSubviews([tipsLabel,bgView]) bgView.addSubviews([titleLabel,phoneView,codeView,pwdView,pwdView2,loginBtn,registerBtn,agreeView]) } override func setupLayout(){ + scrollView.snp.makeConstraints { make in + make.top.equalToSuperview().inset(kNavBtm) + make.left.equalToSuperview() + make.height.equalTo(kScreenHei - kNavBtm) + make.width.equalTo(kScreenWid) + } tipsLabel.snp.makeConstraints { make in make.left.equalToSuperview().inset(28) - make.top.equalTo(kNavBtm + 20) + make.top.equalTo(20) make.centerX.equalToSuperview() } bgView.snp.makeConstraints { make in - make.left.right.equalToSuperview() - make.top.equalToSuperview().inset(244) + make.left.equalToSuperview() + make.top.equalToSuperview().inset(160) + make.width.equalTo(kScreenWid) + make.height.equalTo(kScreenHei - 250) make.bottom.equalToSuperview() } diff --git a/ShenYin/ShenYin/UI/common/SendToolBar.swift b/ShenYin/ShenYin/UI/common/SendToolBar.swift index fffe3bd..7656284 100644 --- a/ShenYin/ShenYin/UI/common/SendToolBar.swift +++ b/ShenYin/ShenYin/UI/common/SendToolBar.swift @@ -31,6 +31,8 @@ class SendToolBar:UIView{ textField.do { v in v.backgroundColor = .clear v.placeholder = "请输入..." + v.returnKeyType = .done + v.delegate = self } addSubview(bgView) @@ -60,10 +62,18 @@ class SendToolBar:UIView{ } @objc func sendAction(){ - if let text = textField.text { + if let text = textField.text,text.isNotEmpty { self.delegate?.sendToolBar(self,text) } } } - +extension SendToolBar:UITextFieldDelegate{ + func textFieldShouldReturn(_ textField: UITextField) -> Bool { +// if let text = textField.text,text.isNotEmpty { +// self.delegate?.sendToolBar(self,text) +// } + textField.resignFirstResponder() + return false + } +}