Browse Source

Merge branch '聊天逐字输出' into 文生图

* 聊天逐字输出:
  1.6(1) 1.修复聊天 messagesCollectionView 底部bottom距离不对的逻辑 2.message label 的高度让其自适应,同时减少计算 3.增加聊天回到底部的出现距离 4.修复冷启动,聊天页面输入框白色一闪而过问题

# Conflicts:
#	AIEmoji/Business/AIChat/TSChatViewController/TSChatViewController/TSChatViewController+Keyboard.swift
100Years 1 month ago
parent
commit
7e23536e8d

+ 4 - 4
AIEmoji.xcodeproj/project.pbxproj

@@ -1257,7 +1257,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 7;
+				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;
@@ -1273,7 +1273,7 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 1.3;
+				MARKETING_VERSION = 1.7;
 				PRODUCT_BUNDLE_IDENTIFIER = com.girl.music.wallpaper;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -1296,7 +1296,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 7;
+				CURRENT_PROJECT_VERSION = 1;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;
@@ -1312,7 +1312,7 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 1.3;
+				MARKETING_VERSION = 1.7;
 				PRODUCT_BUNDLE_IDENTIFIER = com.girl.music.wallpaper;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";

+ 1 - 2
AIEmoji/Business/AIChat/TSChatViewController/TSChatViewController/TSChatViewController+Keyboard.swift

@@ -45,7 +45,7 @@ extension TSChatViewController{
         let frameHeight = scrollView.frame.size.height
         
         // 判断是否需要显示滚动到底部的按钮
-        if offsetY > contentHeight - frameHeight + inputContainerView.frame.size.height - 40 {
+        if offsetY > contentHeight - frameHeight + inputContainerView.frame.size.height - 60 {//40
             scrollToBottomButton.isHidden = true
         } else {
             scrollToBottomButton.isHidden = false
@@ -79,7 +79,6 @@ extension TSChatViewController{
         inputBarType = .custom(inputBarBgView)
     }
     
-
     func configureMessageInputBar() {
         handleKeyBoard()
         configureScrollToBottomButton()

+ 18 - 18
AIEmoji/Business/AIChat/TSChatViewController/TSChatViewController/TSChatViewController+SendMsg.swift

@@ -54,29 +54,29 @@ extension TSChatViewController {
         insertMessage(message)
         NotificationCenter.default.post(name: .kAIAnsweringNotification, object: nil, userInfo: [kIsAIAnswering: true])
 
-//        //每次全部输出
-//        viewModel.sendChatMessage(message: messageString) {[weak self] string in
-//            guard let self = self else { return }
-//            debugPrint("viewModel.AiMDString=\(viewModel.AiMDString)")
-//            message.kind = .attributedText(kMDAttributedString(text: viewModel.AiMDString))
-//            message.sendState = .progress(0.5)
-//
-//            if self.scrollToBottomButton.isHidden == true {
-//                updataAIChatCellUI()
-//                self.messagesCollectionView.scrollToLastItem(animated: false)
-//            }
-//        }
-        
-        //逐字输出
-        var previousAiMDString = ""
+        //每次全部输出
         viewModel.sendChatMessage(message: messageString) {[weak self] string in
             guard let self = self else { return }
             debugPrint("viewModel.AiMDString=\(viewModel.AiMDString)")
+            message.kind = .attributedText(kMDAttributedString(text: viewModel.AiMDString))
             message.sendState = .progress(0.5)
-            delayedOutputAnimation(message: message, previousStr: previousAiMDString, newAddStr: string)
-            previousAiMDString = viewModel.AiMDString
+
+            if self.scrollToBottomButton.isHidden == true {
+                updataAIChatCellUI()
+                self.messagesCollectionView.scrollToLastItem(animated: false)
+            }
         }
         
+//        //逐字输出
+//        var previousAiMDString = ""
+//        viewModel.sendChatMessage(message: messageString) {[weak self] string in
+//            guard let self = self else { return }
+//            debugPrint("viewModel.AiMDString=\(viewModel.AiMDString)")
+//            message.sendState = .progress(0.5)
+//            delayedOutputAnimation(message: message, previousStr: previousAiMDString, newAddStr: string)
+//            previousAiMDString = viewModel.AiMDString
+//        }
+        
         completion: {[weak self] data, error in
             guard let self = self else { return }
             if let _ = data {
@@ -130,7 +130,7 @@ extension TSChatViewController {
 
 extension  TSChatViewController{
     
-    func delayedOutputAnimation(message:TSChatMessage,previousStr:String,newAddStr:String, delay: TimeInterval = 0.05)  {
+    func delayedOutputAnimation(message:TSChatMessage,previousStr:String,newAddStr:String, delay: TimeInterval = 0.07)  {
         var showUIString = previousStr
         let characters = Array(newAddStr)// 将 newText 转换为字符数组