Просмотр исходного кода

Merge branch '3.1' into 3.2

# Conflicts:
#	AIEmoji/Business/TSAILIstVC/TSAILIstVC/TSAILIstCell.swift
100Years 1 неделя назад
Родитель
Сommit
e85dba2df9
30 измененных файлов с 108 добавлено и 39 удалено
  1. 2 2
      AIEmoji.xcodeproj/project.pbxproj
  2. BIN
      AIEmoji/Assets.xcassets/AIList/aiList_emoji.imageset/aiList_emoji@2x.png
  3. BIN
      AIEmoji/Assets.xcassets/AIList/aiList_emoji.imageset/aiList_emoji@3x.png
  4. 22 0
      AIEmoji/Assets.xcassets/AIList/aiList_emote.imageset/Contents.json
  5. BIN
      AIEmoji/Assets.xcassets/AIList/aiList_emote.imageset/aiList_emote@2x.png
  6. BIN
      AIEmoji/Assets.xcassets/AIList/aiList_emote.imageset/aiList_emote@3x.png
  7. BIN
      AIEmoji/Assets.xcassets/AIList/aiList_oldPeople.imageset/aiList_oldPeople@2x.png
  8. BIN
      AIEmoji/Assets.xcassets/AIList/aiList_oldPeople.imageset/aiList_oldPeople@3x.png
  9. BIN
      AIEmoji/Assets.xcassets/AIList/aiList_ttp.imageset/aiList_ttp@2x.png
  10. BIN
      AIEmoji/Assets.xcassets/AIList/aiList_ttp.imageset/aiList_ttp@3x.png
  11. BIN
      AIEmoji/Assets.xcassets/AIList/ailist_child.imageset/ailist_child@2x.png
  12. BIN
      AIEmoji/Assets.xcassets/AIList/ailist_child.imageset/ailist_child@3x.png
  13. BIN
      AIEmoji/Assets.xcassets/AIList/alList_shadow.imageset/alList_shadow@2x.png
  14. BIN
      AIEmoji/Assets.xcassets/AIList/alList_shadow.imageset/alList_shadow@3x.png
  15. 2 2
      AIEmoji/Business/TSAILIstVC/TSAIAgeImageHintVC/TSAIListHintBaseVC.swift
  16. 12 14
      AIEmoji/Business/TSAILIstVC/TSAILIstVC/TSAILIstCell.swift
  17. 15 1
      AIEmoji/Business/TSAILIstVC/TSAILIstVC/TSAILIstVC.swift
  18. 3 4
      AIEmoji/Business/TSGenmojiVC/TSGenmojiVC/View/TSGenmojiColSectionView.swift
  19. 2 2
      AIEmoji/Business/TSGenmojiVC/TSGenmojiVC/ViewModel/TSGenmojiCollectionViewModel.swift
  20. 4 4
      AIEmoji/Business/TSPTPGeneratorVC/TSPTPInputVC/TSPTPInputVC.swift
  21. 5 6
      AIEmoji/Business/TSTextGeneralPictureVC/TSTTPInputVC/View/TSTitleView.swift
  22. 4 4
      AIEmoji/Common/View/TSPhotoPickerManager/TSPhotoPickerManager.swift
  23. 8 0
      AIEmoji/de.lproj/Localizable.strings
  24. 5 0
      AIEmoji/en.lproj/Localizable.strings
  25. 4 0
      AIEmoji/es.lproj/Localizable.strings
  26. 4 0
      AIEmoji/ja.lproj/Localizable.strings
  27. 4 0
      AIEmoji/ko.lproj/Localizable.strings
  28. 4 0
      AIEmoji/pt-BR.lproj/Localizable.strings
  29. 4 0
      AIEmoji/pt-PT.lproj/Localizable.strings
  30. 4 0
      AIEmoji/zh-Hans.lproj/Localizable.strings

+ 2 - 2
AIEmoji.xcodeproj/project.pbxproj

@@ -2206,7 +2206,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 3;
+				CURRENT_PROJECT_VERSION = 5;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;
@@ -2245,7 +2245,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 3;
+				CURRENT_PROJECT_VERSION = 5;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;

BIN
AIEmoji/Assets.xcassets/AIList/aiList_emoji.imageset/aiList_emoji@2x.png


BIN
AIEmoji/Assets.xcassets/AIList/aiList_emoji.imageset/aiList_emoji@3x.png


+ 22 - 0
AIEmoji/Assets.xcassets/AIList/aiList_emote.imageset/Contents.json

@@ -0,0 +1,22 @@
+{
+  "images" : [
+    {
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "filename" : "aiList_emote@2x.png",
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "filename" : "aiList_emote@3x.png",
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN
AIEmoji/Assets.xcassets/AIList/aiList_emote.imageset/aiList_emote@2x.png


BIN
AIEmoji/Assets.xcassets/AIList/aiList_emote.imageset/aiList_emote@3x.png


BIN
AIEmoji/Assets.xcassets/AIList/aiList_oldPeople.imageset/aiList_oldPeople@2x.png


BIN
AIEmoji/Assets.xcassets/AIList/aiList_oldPeople.imageset/aiList_oldPeople@3x.png


BIN
AIEmoji/Assets.xcassets/AIList/aiList_ttp.imageset/aiList_ttp@2x.png


BIN
AIEmoji/Assets.xcassets/AIList/aiList_ttp.imageset/aiList_ttp@3x.png


BIN
AIEmoji/Assets.xcassets/AIList/ailist_child.imageset/ailist_child@2x.png


BIN
AIEmoji/Assets.xcassets/AIList/ailist_child.imageset/ailist_child@3x.png


BIN
AIEmoji/Assets.xcassets/AIList/alList_shadow.imageset/alList_shadow@2x.png


BIN
AIEmoji/Assets.xcassets/AIList/alList_shadow.imageset/alList_shadow@3x.png


+ 2 - 2
AIEmoji/Business/TSAILIstVC/TSAIAgeImageHintVC/TSAIListHintBaseVC.swift

@@ -73,7 +73,7 @@ class TSAIListHintBaseVC: TSBaseVC {
             make.trailing.equalTo(-32)
         }
         
-        let goodLabel = UILabel.createLabel(text: "Good photo examples".localized,font: .font(size: 14,weight: .medium),textColor: .white,numberOfLines: 0)
+        let goodLabel = UILabel.createLabel(text: "Good photo examples".localized,font: .font(size: 16,weight: .medium),textColor: .white,numberOfLines: 0)
         popupContentView.addSubview(goodLabel)
         goodLabel.snp.makeConstraints { make in
             make.top.equalTo(titleLabel.snp.bottom).offset(28)
@@ -100,7 +100,7 @@ class TSAIListHintBaseVC: TSBaseVC {
         
         
         
-        let badLabel = UILabel.createLabel(text: "Bad photo examples".localized,font: .font(size: 14,weight: .medium),textColor: .white,numberOfLines: 0)
+        let badLabel = UILabel.createLabel(text: "Bad photo examples".localized,font: .font(size: 16,weight: .medium),textColor: .white,numberOfLines: 0)
         popupContentView.addSubview(badLabel)
         badLabel.snp.makeConstraints { make in
             make.top.equalTo(goodImageView.snp.bottom).offset(28)

+ 12 - 14
AIEmoji/Business/TSAILIstVC/TSAILIstVC/TSAILIstCell.swift

@@ -31,11 +31,11 @@ class TSAILIstCell: TSBaseCollectionCell {
     }()
     
     
-    lazy var shadowImageView: UIImageView = {
-        let shadowImageView = UIImageView.createImageView(imageName: "alList_shadow",contentMode: .scaleToFill)
-        shadowImageView.alpha = 0.7
-        return shadowImageView
-    }()
+//    lazy var shadowImageView: UIImageView = {
+//        let shadowImageView = UIImageView.createImageView(imageName: "alList_shadow",contentMode: .scaleToFill)
+//        shadowImageView.alpha = 0.7
+//        return shadowImageView
+//    }()
     
     lazy var titleLab: UILabel = {
         let titleLab = UILabel.createLabel(font: .font(size: 16,weight: .medium),textColor: .fromHex("FFFFFF"))
@@ -43,7 +43,7 @@ class TSAILIstCell: TSBaseCollectionCell {
     }()
     
     lazy var leftSubLab: UILabel = {
-        return UILabel.createLabel(font: .font(size: 14,weight: .medium),textColor: .white.withAlphaComponent(0.8),numberOfLines: 0)
+        return UILabel.createLabel(font: .font(size: 14),textColor: .white.withAlphaComponent(0.8),numberOfLines: 0)
     }()
 
     lazy var submitBtn: UIButton = {
@@ -62,22 +62,20 @@ class TSAILIstCell: TSBaseCollectionCell {
             make.top.bottom.leading.trailing.equalTo(0)
         }
 
-        bgContentView.addSubview(shadowImageView)
-        shadowImageView.snp.makeConstraints { make in
-            make.bottom.leading.trailing.equalTo(0)
-            make.height.equalTo(90*kDesignScale)
-        }
-        submitBtn.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
+//        bgContentView.addSubview(shadowImageView)
+//        shadowImageView.snp.makeConstraints { make in
+//            make.bottom.leading.trailing.equalTo(0)
+//            make.height.equalTo(90*kDesignScale)
+//        }
+
         bgContentView.addSubview(submitBtn)
         submitBtn.snp.makeConstraints { make in
             make.trailing.equalTo(-16)
             make.bottom.equalTo(-27)
             make.height.equalTo(24)
-            // 设置按钮宽度根据内容自适应
             make.width.equalTo(submitBtn.intrinsicContentSize.width)
         }
         
-        leftSubLab.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
         bgContentView.addSubview(leftSubLab)
         leftSubLab.snp.makeConstraints { make in
             make.trailing.equalTo(submitBtn.snp.leading).offset(-15)

+ 15 - 1
AIEmoji/Business/TSAILIstVC/TSAILIstVC/TSAILIstVC.swift

@@ -49,7 +49,21 @@ class TSAILIstVC: TSBaseVC {
                     kPushVC(target: self, modelVC: baseVc)
                                 
         }))
-
+        
+        sectionModel.addSubItemModel(
+            createItemModel(
+                leftImageName:"aiList_emote",
+                leftTitle: "Change expression".localized,
+                leftSubTitle: "AI helps you Change expression".localized,
+                rightViewStyle: 0,
+                tapBlock: { [weak self] model, _, _ in
+                   guard let self = self else { return }
+                    let baseVc = TSAIUploadPhotoBaseVC(titleString: model.leftTitle ?? "", generatorStyle: .ageChild)
+                    kPushVC(target: self, modelVC: baseVc)
+                                
+        }))
+        
+        
         sectionModel.addSubItemModel(
             createItemModel(
                 leftImageName:"aiList_emoji",

+ 3 - 4
AIEmoji/Business/TSGenmojiVC/TSGenmojiVC/View/TSGenmojiColSectionView.swift

@@ -28,12 +28,11 @@ class TSGenmojiColSectionView: TSBaseCollectionnReusableView {
     override func creatUI() {
         
         bgContentView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)))
-        
-        let centerYOffset = 8.0
+  
         bgContentView.addSubview(leftLab)
         leftLab.snp.makeConstraints { make in
             make.leading.equalTo(16)
-            make.centerY.equalToSuperview().offset(centerYOffset)
+            make.centerY.equalToSuperview().offset(kSectionTitleViewCenterYOffset)
         }
         
         bgContentView.addSubview(leftSubLab)
@@ -46,7 +45,7 @@ class TSGenmojiColSectionView: TSBaseCollectionnReusableView {
         delBtn.snp.makeConstraints { make in
             make.trailing.equalTo(-6)
             make.width.height.equalTo(40)
-            make.centerY.equalToSuperview().offset(centerYOffset)
+            make.centerY.equalToSuperview().offset(kSectionTitleViewCenterYOffset)
         }
     }
     

+ 2 - 2
AIEmoji/Business/TSGenmojiVC/TSGenmojiVC/ViewModel/TSGenmojiCollectionViewModel.swift

@@ -58,7 +58,7 @@ enum TSGenmojiCoLStyple : Int {
         case .history:
             return UIEdgeInsets(top: 0, left: 24, bottom: 10, right: 24)
         case .textPicHistory,.ptpPicHistory:
-            return UIEdgeInsets(top: 0, left: 16, bottom: 10, right: 16)
+            return UIEdgeInsets(top: 0, left: 16, bottom: 0, right: 16)
         case .ptpEntrance:
             return UIEdgeInsets(top: 17, left: 17, bottom: 0, right: 15)
         case .ptpSelectStyle:
@@ -138,7 +138,7 @@ enum TSGenmojiCoLStyple : Int {
         case .generate,.textPicGenerate,.ptpEntrance,.changeAgeHistory:
             return CGSize.zero
         case .history,.textPicHistory,.ptpPicHistory,.ptpSelectStyle,.ptpUpload:
-            return CGSizeMake(k_ScreenWidth, 60)
+            return CGSizeMake(k_ScreenWidth, kSectionTitleViewH)
         }
     }
 }

+ 4 - 4
AIEmoji/Business/TSPTPGeneratorVC/TSPTPInputVC/TSPTPInputVC.swift

@@ -345,7 +345,7 @@ class TSPTPInputVC: TSBaseVC {
         
         contentView.addSubview(submitBtn)
         submitBtn.snp.makeConstraints { make in
-            make.bottom.equalTo(-k_Height_safeAreaInsetsBottom())
+            make.bottom.equalTo(-16)
             make.leading.equalTo(16)
             make.trailing.equalTo(-16)
             make.height.equalTo(48)
@@ -353,7 +353,7 @@ class TSPTPInputVC: TSBaseVC {
         
         setUpCusStackView()
         
-//        upDateCusStackViewH()
+        upDateCusStackViewH()
         kDelayMainShort {
             self.upDateCusStackViewH()
         }
@@ -414,7 +414,7 @@ extension TSPTPInputVC {
                 dePrint("collectionViewObserver cusStackView.viewH == \(cusStackView.viewH)")
                 return cusStackView.viewH
             }
-            return 462 //+bannerH+bannerY+promptTextViewH
+            return 454 //+bannerH+bannerY+promptTextViewH
         }
     }
     
@@ -463,7 +463,7 @@ extension TSPTPInputVC {
         }
         uploadPhotoTitleView.contentView.addSubview(hintBtn)
         hintBtn.snp.makeConstraints { make in
-            make.centerY.equalToSuperview().offset(uploadPhotoTitleView.centerYOffset)
+            make.centerY.equalToSuperview().offset(kSectionTitleViewCenterYOffset)
             make.trailing.equalTo(-16)
             make.width.height.equalTo(16)
         }

+ 5 - 6
AIEmoji/Business/TSTextGeneralPictureVC/TSTTPInputVC/View/TSTitleView.swift

@@ -5,10 +5,11 @@
 //  Created by 100Years on 2025/3/11.
 //
 
-
+let kSectionTitleViewH:CGFloat = 56.0
+let kSectionTitleViewCenterYOffset:CGFloat = 6.0
 class TSTitleView: TSBaseView {
     
-    static let viewH:CGFloat = 60.0
+    static let viewH:CGFloat = kSectionTitleViewH
     let viewH:CGFloat = TSTitleView.viewH
     
     lazy var titleLab: UILabel = {
@@ -21,20 +22,18 @@ class TSTitleView: TSBaseView {
         return UILabel.createLabel(font: .font(size: 12,weight: .medium),textColor: .fromHex("#A7A7A7"))
     }()
 
-    let centerYOffset = 8.0
-    
     override func creatUI() {
         
 
         contentView.addSubview(titleLab)
         titleLab.snp.makeConstraints { make in
             make.leading.equalTo(16)
-            make.centerY.equalToSuperview().offset(centerYOffset)
+            make.centerY.equalToSuperview().offset(kSectionTitleViewCenterYOffset)
         }
         
         contentView.addSubview(leftSubLab)
         leftSubLab.snp.makeConstraints { make in
-            make.leading.equalTo(titleLab.snp.trailing).offset(8)
+            make.leading.equalTo(titleLab.snp.trailing).offset(kSectionTitleViewCenterYOffset)
             make.centerY.equalTo(titleLab)
         }
     }

+ 4 - 4
AIEmoji/Common/View/TSPhotoPickerManager/TSPhotoPickerManager.swift

@@ -77,12 +77,12 @@ class TSPhotoPickerManager: NSObject {
     /// 显示权限提示
     private func showPermissionAlert() {
         let alert = UIAlertController(
-            title: "相册权限未开启",
-            message: "请在设置中开启相册权限以选择照片",
+            title: "No photos permission".localized,
+            message: "Please enable photo permission in settings to select photos".localized,
             preferredStyle: .alert
         )
-        alert.addAction(UIAlertAction(title: "取消", style: .cancel, handler: nil))
-        alert.addAction(UIAlertAction(title: "去设置", style: .default) { _ in
+        alert.addAction(UIAlertAction(title: "Cancel".localized, style: .cancel, handler: nil))
+        alert.addAction(UIAlertAction(title: "Go to Settings".localized, style: .default) { _ in
             if let url = URL(string: UIApplication.openSettingsURLString) {
                 UIApplication.shared.open(url, options: [:], completionHandler: nil)
             }

+ 8 - 0
AIEmoji/de.lproj/Localizable.strings

@@ -151,3 +151,11 @@
 "Turn words into visually stunning artwork" = "Verwandeln Sie Wörter in visuell beeindruckende Kunstwerke";
 "Turn your inspiration into brilliant emojis" = "Verwandeln Sie Ihre Inspiration in brillante Emojis";
 "Size ≤ 10MB" = "Größe ≤10MB";
+
+"No photos permission" = "Keine Fotoerlaubnis";
+"Please enable photo permission in settings to select photos" = "Bitte aktivieren Sie die Fotoberechtigung in den Einstellungen, um Fotos auszuwählen";
+"Go to Settings" = "Gehen Sie zu Einstellungen";
+
+"No photos permission" = "無照片權限";
+"Please enable photo permission in settings to select photos" = "請在設定中啟用照片權限以選擇照片";
+"Go to Settings" = "去“設定”";

+ 5 - 0
AIEmoji/en.lproj/Localizable.strings

@@ -151,3 +151,8 @@
 "Turn words into visually stunning artwork" = "Turn words into visually stunning artwork";
 "Turn your inspiration into brilliant emojis" = "Turn your inspiration into brilliant emojis";
 "Size ≤ 10MB" = "Size ≤ 10MB";
+
+
+"No photos permission" = "No photos permission";
+"Please enable photo permission in settings to select photos" = "Please enable photo permission in settings to select photos";
+"Go to Settings" = "Go to Settings";

+ 4 - 0
AIEmoji/es.lproj/Localizable.strings

@@ -151,3 +151,7 @@
 "Turn words into visually stunning artwork" = "Convierte palabras en obras de arte visualmente impresionantes";
 "Turn your inspiration into brilliant emojis" = "Convierte tu inspiración en emojis brillantes";
 "Size ≤ 10MB" = "Tamaño ≤10MB";
+
+"No photos permission" = "Sin permiso para fotos";
+"Please enable photo permission in settings to select photos" = "Habilite el permiso de fotos en la configuración para seleccionar fotos.";
+"Go to Settings" = "Ir a configuración";

+ 4 - 0
AIEmoji/ja.lproj/Localizable.strings

@@ -151,3 +151,7 @@
 "Turn words into visually stunning artwork" = "言葉を素晴らしいアートに変える";
 "Turn your inspiration into brilliant emojis" = "あなたのインスピレーションを素晴らしい表現に変えます";
 "Size ≤ 10MB" = "サイズ≤10MB";
+
+"No photos permission" = "写真の許可はありません";
+"Please enable photo permission in settings to select photos" = "写真を選択するには、設定で写真の許可を有効にしてください";
+"Go to Settings" = "設定に移動";

+ 4 - 0
AIEmoji/ko.lproj/Localizable.strings

@@ -151,3 +151,7 @@
 "Turn words into visually stunning artwork" = "단어를 시각적으로 놀라운 예술 작품으로 바꿔 보세요.";
 "Turn your inspiration into brilliant emojis" = "영감을 화려한 이모티콘으로 바꿔보세요";
 "Size ≤ 10MB" = "크기≤10MB)";
+
+"No photos permission" = "사진 권한 없음";
+"Please enable photo permission in settings to select photos" = "사진을 선택하려면 설정에서 사진 권한을 활성화하세요.";
+"Go to Settings" = "설정으로 이동";

+ 4 - 0
AIEmoji/pt-BR.lproj/Localizable.strings

@@ -151,3 +151,7 @@
 "Turn words into visually stunning artwork" = "Transforme palavras em obras de arte visualmente deslumbrantes";
 "Turn your inspiration into brilliant emojis" = "Transforme sua inspiração em emojis brilhantes";
 "Size ≤ 10MB" = "Tamanho ≤10MB";
+
+"No photos permission" = "Sem permissão de fotos";
+"Please enable photo permission in settings to select photos" = "Ative a permissão de fotos nas configurações para selecionar fotos";
+"Go to Settings" = "Vá para Configurações";

+ 4 - 0
AIEmoji/pt-PT.lproj/Localizable.strings

@@ -151,3 +151,7 @@
 "Turn words into visually stunning artwork" = "Transforme palavras em obras de arte visualmente deslumbrantes";
 "Turn your inspiration into brilliant emojis" = "Transforme sua inspiração em emojis brilhantes";
 "Size ≤ 10MB" = "Tamanho ≤10MB";
+
+"No photos permission" = "Sem permissão de fotos";
+"Please enable photo permission in settings to select photos" = "Ative a permissão de fotos nas configurações para selecionar fotos";
+"Go to Settings" = "Vá para Configurações";

+ 4 - 0
AIEmoji/zh-Hans.lproj/Localizable.strings

@@ -151,3 +151,7 @@
 "Turn words into visually stunning artwork" = "将文字变成令人惊叹的艺术";
 "Turn your inspiration into brilliant emojis" = "将您的灵感转化为精彩的表情";
 "Size ≤ 10MB" = "大小≤10MB";
+
+"No photos permission" = "无照片权限";
+"Please enable photo permission in settings to select photos" = "请在设置中启用照片权限以选择照片";
+"Go to Settings" = "去“设置”";