100Years 1 Minggu lalu
induk
melakukan
b3b66aea9c

+ 2 - 2
AIEmoji.xcodeproj/project.pbxproj

@@ -2086,7 +2086,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 2;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;
@@ -2125,7 +2125,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CLANG_ENABLE_MODULES = YES;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 2;
 				DEVELOPMENT_TEAM = 65UD255J84;
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;

+ 2 - 2
AIEmoji/Business/TSPTPGeneratorVC/TSPTPImageHintVC/TSPTPImageHintVC.swift

@@ -60,7 +60,7 @@ class TSPTPImageHintVC: TSBaseVC {
             make.trailing.equalTo(-32)
         }
         
-        let goodInfoLabel = UILabel.createLabel(text: "Fully clear and visible face, in good lighting".localized,font: .font(size: 14,weight: .medium),textColor: .white,numberOfLines: 0)
+        let goodInfoLabel = UILabel.createLabel(text: "Fully clear and visible face, in good lighting".localized,font: .font(size: 14,weight: .medium),textColor: .white.withAlphaComponent(0.6),numberOfLines: 0)
         popupContentView.addSubview(goodInfoLabel)
         goodInfoLabel.snp.makeConstraints { make in
             make.top.equalTo(goodLabel.snp.bottom).offset(8)
@@ -87,7 +87,7 @@ class TSPTPImageHintVC: TSBaseVC {
             make.trailing.equalTo(-32)
         }
         
-        let badInfoLabel = UILabel.createLabel(text: "Group photos, covered faces, nudes".localized,font: .font(size: 14,weight: .medium),textColor: .white,numberOfLines: 0)
+        let badInfoLabel = UILabel.createLabel(text: "Group photos, covered faces, nudes".localized,font: .font(size: 14,weight: .medium),textColor: .white.withAlphaComponent(0.6),numberOfLines: 0)
         popupContentView.addSubview(badInfoLabel)
         badInfoLabel.snp.makeConstraints { make in
             make.top.equalTo(badLabel.snp.bottom).offset(8)

+ 17 - 15
AIEmoji/Business/TSPTPGeneratorVC/TSPTPInputVC/TSPTPInputVC.swift

@@ -245,7 +245,6 @@ class TSPTPInputVC: TSBaseVC {
     var promptTextViewH:CGFloat = 84.0
     lazy var promptTextView:UIView =  {
         let promptTextView = UIView()
-        //promptTextView.backgroundColor = "#333333".uiColor
         promptTextView.clipsToBounds = true
         let bgView = UIView()
         bgView.backgroundColor = "#333333".uiColor
@@ -324,22 +323,23 @@ class TSPTPInputVC: TSBaseVC {
     }()
     override func createView() {
         
-        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(clickView))
-        tapGesture.cancelsTouchesInView = false
-        view.addGestureRecognizer(tapGesture)
-        
         navBarContentView.addSubview(navBarView)
         navBarView.snp.makeConstraints { make in
             make.edges.equalToSuperview()
         }
 
 
-        
         contentView.addSubview(collectionComponent.collectionView)
         collectionComponent.collectionView.snp.makeConstraints { make in
             make.edges.equalToSuperview()
         }
         
+        
+        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(clickView))
+        tapGesture.cancelsTouchesInView = false // 确保不影响其他点击事件
+        collectionComponent.collectionView.addGestureRecognizer(tapGesture)
+
+        
         collectionComponent.clear()
         collectionComponent.reloadView(with:viewModel.colDataArray)
         
@@ -386,7 +386,7 @@ extension TSPTPInputVC {
             if cusStackView.viewH > 0{
                 return cusStackView.viewH
             }
-            return 551+bannerH+bannerY
+            return 551+bannerH+bannerY//+promptTextViewH
         }
     }
     
@@ -410,7 +410,13 @@ extension TSPTPInputVC {
     func setUpCusStackView(){
         
         collectionComponent.collectionView.addSubview(cusStackView)
-
+        
+//                cusStackView.addSubviewToStack(promptTextView)
+//                promptTextView.snp.makeConstraints { make in
+//                    make.height.equalTo(promptTextViewH)
+//                    make.width.equalTo(k_ScreenWidth)
+//                }
+        
         cusStackView.addSubviewToStack(entranceView)
         entranceView.snp.makeConstraints { make in
             make.height.equalTo(bannerH+bannerY)
@@ -429,9 +435,9 @@ extension TSPTPInputVC {
             guard let self = self else { return }
             presentModalHintVC()
         }
-        uploadPhotoTitleView.addSubview(hintBtn)
+        uploadPhotoTitleView.contentView.addSubview(hintBtn)
         hintBtn.snp.makeConstraints { make in
-            make.centerY.equalToSuperview()
+            make.centerY.equalToSuperview().offset(uploadPhotoTitleView.centerYOffset)
             make.trailing.equalTo(-16)
             make.width.height.equalTo(16)
         }
@@ -455,11 +461,7 @@ extension TSPTPInputVC {
             make.width.equalTo(k_ScreenWidth)
         }
         
-//        cusStackView.addSubviewToStack(promptTextView)
-//        promptTextView.snp.makeConstraints { make in
-//            make.height.equalTo(promptTextViewH)
-//            make.width.equalTo(k_ScreenWidth)
-//        }
+
         
     }
 }

+ 1 - 1
AIEmoji/Business/TSPTPGeneratorVC/TSPTPInputVC/View/TSPTPUploadView.swift

@@ -131,7 +131,7 @@ class TSPTPUploadView: TSBaseView {
         
         contentView.addSubview(deleteBtn)
         deleteBtn.snp.makeConstraints { make in
-            make.top.equalTo(4)
+            make.top.equalTo(-6)
             make.trailing.equalTo(-4)
             make.width.height.equalTo(32)
         }

+ 11 - 0
AIEmoji/Business/TSPurchaseMembershipVC/TSPurchaseVC.swift

@@ -266,6 +266,17 @@ class TSPurchaseVC: TSBaseVC {
         self.dismiss(animated: true)
     }
     
+    override func viewWillAppear(_ animated: Bool) {
+         super.viewWillAppear(animated)
+         // 禁用右滑返回手势
+         navigationController?.interactivePopGestureRecognizer?.isEnabled = false
+     }
+
+     override func viewWillDisappear(_ animated: Bool) {
+         super.viewWillDisappear(animated)
+         // 恢复右滑返回手势
+         navigationController?.interactivePopGestureRecognizer?.isEnabled = true
+     }
     
     deinit {
         cancellabel.removeAll()

+ 2 - 2
AIEmoji/Business/TSTextGeneralPictureVC/TSTTPInputVC/View/TSTitleView.swift

@@ -21,10 +21,10 @@ class TSTitleView: TSBaseView {
         return UILabel.createLabel(font: .font(size: 12,weight: .medium),textColor: .fromHex("#A7A7A7"))
     }()
 
-
+    let centerYOffset = 8.0
+    
     override func creatUI() {
         
-        let centerYOffset = 8.0
 
         contentView.addSubview(titleLab)
         titleLab.snp.makeConstraints { make in

+ 3 - 3
AIEmoji/Common/Purchase/TSPurchaseManager.swift

@@ -143,9 +143,9 @@ public class PurchaseManager: NSObject {
     }
 
     @objc public var isVip: Bool {
-//        #if DEBUG
-//            return true
-//        #endif
+        #if DEBUG
+            return true
+        #endif
         guard let expiresDate = expiredDate else {
             return false
         }

+ 14 - 2
AIEmoji/zh-Hant.lproj/Localizable.strings

@@ -86,7 +86,7 @@
 "History" = "歷史記錄";
 "Example" = "範例";
 "Generate" = "立刻生成";
-"Save" = "節省";
+"Save-Vip" = "節省";
 "Type your idea here." = "在此輸入您的想法";
 "Hint Inspiration" = "靈感提示";
 "Graffiti" = "塗鴉";
@@ -99,7 +99,7 @@
 "Leave" = "離開";
 "Wait" = "等待";
 "Failed to generate, please try later" = "生成失敗,請稍後再試";
-"Greetings! Curious about\nwhat I can do?" = "你好!好奇\n我能做什麼?";
+"Greetings! Curious about\nwhat I can do?" = "你好!好奇我能做什麼?";
 "I can tackle your questions, my skillset includes, but is not limited to:\n`📧 Composing high-quality emails`\n`🇺🇸 Facilitating language learning`\n`📑 Assisting in your studies`\n`💡Brainstorming ideas`\n`and much more!`" = "我可以解決您的問題,我的技能包括但不限於:\n`📧 撰寫高品質的電子郵件`\n`🇺🇸 學習多語言`\n`📑 協助您的學業`\n`💡為您提供靈感`\n`等等! `";
 "No record" = "無記錄";
 "Emoji" = "表情";
@@ -116,3 +116,15 @@
 "Privacy Policy" = "隱私協議";
 "Allow us to access Photos in order to save emoji to your device." = "允許我們存取照片權限以便將表情圖片等保存到您的裝置中";
 "Chat" = "聊天";
+
+
+"A serene lakeside at dusk, golden reflections of autumn trees rippling in the water, distant snow-capped mountains under pastel-colored clouds" = "黃昏時分寧靜的湖畔,秋樹金色的倒影在水中蕩漾,遠處的雪山在柔和的彩雲下";
+"Futuristic greenhouse floating above neon-lit cityscape, transparent domes filled with bioluminescent plants, soft light diffraction through glass panels" = "未來派溫室漂浮在霓虹燈照亮的都市景觀之上,透明的圓頂充滿生物發光植物,柔和的光通過玻璃板繞射";
+"Mystical stone archway covered in glowing moss, leading to a hidden valley with floating rock formations and cascading waterfalls" = "神秘的石拱門覆蓋著發光的苔蘚,通向一個隱藏的山谷,那裡有漂浮的岩層和瀑布";
+"Underground crystal cave illuminated by geothermal energy, prismatic light beams refracting through giant quartz clusters, steam rising from thermal pools" = "地下水晶洞穴被地熱能照亮,棱柱光束穿過巨大的石英簇折射,蒸汽從溫泉池中升起";
+"Cosmic library with levitating bookshelves, celestial maps projected in mid-air, reading nooks overlooking spiral galaxy through stained glass windows" = "宇宙圖書館配有懸浮書架、投射在半空中的天體圖、閱讀角落,透過彩色玻璃窗俯瞰螺旋星系";
+"Morning fog enveloping terraced rice fields, bamboo water wheels turning slowly, thatched cottages emerging from mist with mountain silhouette behind" = "晨霧籠罩梯田,竹水車緩緩轉動,茅草屋從霧氣中浮現,背後是山影";
+"Surreal marketplace at planetary twilight, floating lanterns casting geometric shadows, merchants selling exotic fruits with iridescent skins" = "行星暮光下的超現實市場,漂浮的燈籠投射幾何陰影,商人出售帶有虹彩外皮的異國水果";
+"Hyperrealistic macro view of dewdrops on spiderweb, morning sunlight creating rainbow spectra, blurred forest background with bokeh effects" = "蜘蛛網上露珠的超現實宏觀視圖、晨光創造彩虹光譜、模糊的森林背景與散景效果";
+"Cybernetic wildlife sanctuary at dawn, solar-panel trees powering force fields, robotic caretakers feeding holographic animals in savanna simulation" = "黎明時分的控制論野生動物保護區,太陽能電池板樹為力場提供動力,機器人看護者在稀樹草原類比中餵養全息動物";
+"Minimalist geometric landscape with gradient-colored pyramids, clean lines intersecting with organic cloud formations, symmetrical composition" = "極簡主義幾何景觀,漸變色金字塔,乾淨的線條與有機雲層相交,對稱的構圖";

+ 1 - 1
Podfile

@@ -13,7 +13,7 @@ target 'AIEmoji' do
   pod 'Kingfisher', '7.10.0'
   pod 'Alamofire'
   pod 'MJRefresh'
-  #pod 'IQKeyboardManagerSwift'
+  pod 'IQKeyboardManagerSwift'
   pod 'JXSegmentedView'
   pod 'JXPagingView/Paging'
   pod 'Masonry'

+ 58 - 1
Podfile.lock

@@ -1,5 +1,45 @@
 PODS:
   - Alamofire (5.10.2)
+  - IQKeyboardCore (1.0.5)
+  - IQKeyboardManagerSwift (8.0.0):
+    - IQKeyboardManagerSwift/Appearance (= 8.0.0)
+    - IQKeyboardManagerSwift/Core (= 8.0.0)
+    - IQKeyboardManagerSwift/IQKeyboardReturnManager (= 8.0.0)
+    - IQKeyboardManagerSwift/IQKeyboardToolbarManager (= 8.0.0)
+    - IQKeyboardManagerSwift/IQTextView (= 8.0.0)
+    - IQKeyboardManagerSwift/Resign (= 8.0.0)
+  - IQKeyboardManagerSwift/Appearance (8.0.0):
+    - IQKeyboardManagerSwift/Core
+  - IQKeyboardManagerSwift/Core (8.0.0):
+    - IQKeyboardNotification
+    - IQTextInputViewNotification
+  - IQKeyboardManagerSwift/IQKeyboardReturnManager (8.0.0):
+    - IQKeyboardReturnManager
+  - IQKeyboardManagerSwift/IQKeyboardToolbarManager (8.0.0):
+    - IQKeyboardManagerSwift/Core
+    - IQKeyboardToolbarManager
+  - IQKeyboardManagerSwift/IQTextView (8.0.0):
+    - IQTextView
+  - IQKeyboardManagerSwift/Resign (8.0.0):
+    - IQKeyboardManagerSwift/Core
+  - IQKeyboardNotification (1.0.3)
+  - IQKeyboardReturnManager (1.0.4):
+    - IQKeyboardCore (= 1.0.5)
+  - IQKeyboardToolbar (1.1.1):
+    - IQKeyboardCore
+    - IQKeyboardToolbar/Core (= 1.1.1)
+  - IQKeyboardToolbar/Core (1.1.1):
+    - IQKeyboardCore
+    - IQKeyboardToolbar/Placeholderable
+  - IQKeyboardToolbar/Placeholderable (1.1.1):
+    - IQKeyboardCore
+  - IQKeyboardToolbarManager (1.1.2):
+    - IQKeyboardToolbar
+    - IQTextInputViewNotification
+  - IQTextInputViewNotification (1.0.8):
+    - IQKeyboardCore
+  - IQTextView (1.0.5):
+    - IQKeyboardToolbar/Placeholderable
   - JXPagingView/Paging (2.1.3)
   - JXSegmentedView (1.4.1)
   - Kingfisher (7.10.0)
@@ -25,6 +65,7 @@ PODS:
 
 DEPENDENCIES:
   - Alamofire
+  - IQKeyboardManagerSwift
   - JXPagingView/Paging
   - JXSegmentedView
   - Kingfisher (= 7.10.0)
@@ -39,6 +80,14 @@ DEPENDENCIES:
 SPEC REPOS:
   trunk:
     - Alamofire
+    - IQKeyboardCore
+    - IQKeyboardManagerSwift
+    - IQKeyboardNotification
+    - IQKeyboardReturnManager
+    - IQKeyboardToolbar
+    - IQKeyboardToolbarManager
+    - IQTextInputViewNotification
+    - IQTextView
     - JXPagingView
     - JXSegmentedView
     - Kingfisher
@@ -57,6 +106,14 @@ EXTERNAL SOURCES:
 
 SPEC CHECKSUMS:
   Alamofire: 7193b3b92c74a07f85569e1a6c4f4237291e7496
+  IQKeyboardCore: 28c8bf3bcd8ba5aa1570b318cbc4da94b861711e
+  IQKeyboardManagerSwift: 0c6fbbaa2e60739e48d7cf59f25661471a7a3a65
+  IQKeyboardNotification: d7382c4466c5a5adef92c7452ebf861b36050088
+  IQKeyboardReturnManager: 972be48528ce9e7508ab3ab15ac7efac803f17f5
+  IQKeyboardToolbar: d4bdccfb78324aec2f3920659c77bb89acd33312
+  IQKeyboardToolbarManager: 6f4072ac620c2572d4af8c09f42a801f3e4909f7
+  IQTextInputViewNotification: f5e954d8881fd9808b744e49e024cc0d4bcfe572
+  IQTextView: ae13b4922f22e6f027f62c557d9f4f236b19d5c7
   JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e
   JXSegmentedView: cd73555ce2134d1656db2cb383ba9c2f36fb5078
   Kingfisher: a18f05d3b6d37d8650ee4a3e61d57a28fc6207f6
@@ -70,6 +127,6 @@ SPEC CHECKSUMS:
   SwipeCellKit: 3972254a826da74609926daf59b08d6c72e619ea
   TSSmalCoacopods: 6aa97167f0c76b16fc7d1fd1eb198bb6aece4f68
 
-PODFILE CHECKSUM: ce1b55ab9fd89ca0cf7de7aadc2c0f0045e3386b
+PODFILE CHECKSUM: 5f1a9b50d5f2041d75518c8ffbc2f8cd02fa11a2
 
 COCOAPODS: 1.16.2