Bladeren bron

2.2(2)上线
1.更改 logo和名称
2.更改免费次数 为 1
3.为 button 设置 vip 标识

100Years 1 maand geleden
bovenliggende
commit
f0f19fb8d4
40 gewijzigde bestanden met toevoegingen van 94 en 70 verwijderingen
  1. 4 4
      AIEmoji.xcodeproj/project.pbxproj
  2. 1 1
      AIEmoji.xcodeproj/xcshareddata/xcschemes/AIEmoji.xcscheme
  3. BIN
      AIEmoji/Assets.xcassets/App-Icon.imageset/App-Icon.png
  4. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-1024.png
  5. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png
  6. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png
  7. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png
  8. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png
  9. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-38@2x.png
  10. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-38@3x.png
  11. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png
  12. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png
  13. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png
  14. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png
  15. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-64@2x.png
  16. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-64@3x.png
  17. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-68@2x.png
  18. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png
  19. BIN
      AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png
  20. BIN
      AIEmoji/Assets.xcassets/Common/launch_icon.imageset/launch_image@2x.png
  21. BIN
      AIEmoji/Assets.xcassets/Common/launch_icon.imageset/launch_image@3x.png
  22. 2 2
      AIEmoji/Assets.xcassets/Common/launch_img.imageset/Contents.json
  23. BIN
      AIEmoji/Assets.xcassets/Common/launch_img.imageset/launch_img@2x.png
  24. BIN
      AIEmoji/Assets.xcassets/Common/launch_img.imageset/launch_img@3x.png
  25. 22 0
      AIEmoji/Assets.xcassets/VIP/btnImage_vip.imageset/Contents.json
  26. BIN
      AIEmoji/Assets.xcassets/VIP/btnImage_vip.imageset/btnImage_vip@2x.png
  27. BIN
      AIEmoji/Assets.xcassets/VIP/btnImage_vip.imageset/btnImage_vip@3x.png
  28. BIN
      AIEmoji/Assets.xcassets/VIP/setting_noVip.imageset/setting_noVip@2x.png
  29. BIN
      AIEmoji/Assets.xcassets/VIP/setting_noVip.imageset/setting_noVip@3x.png
  30. BIN
      AIEmoji/Assets.xcassets/VIP/setting_vip.imageset/setting_vip@2x.png
  31. BIN
      AIEmoji/Assets.xcassets/VIP/setting_vip.imageset/setting_vip@3x.png
  32. BIN
      AIEmoji/Assets.xcassets/VIP/vip_big_icon.imageset/vip_big_icon@2x.png
  33. BIN
      AIEmoji/Assets.xcassets/VIP/vip_big_icon.imageset/vip_big_icon@3x.png
  34. 3 3
      AIEmoji/Base.lproj/LaunchScreen.storyboard
  35. 8 10
      AIEmoji/Business/TSGenmojiVC/TSGenmojiVC/View/TSGenmojiGennerateCell.swift
  36. 15 40
      AIEmoji/Business/TSPTPGeneratorVC/TSPhotoToPhotoVC/TSPhotoToPhotoVC.swift
  37. 13 2
      AIEmoji/Business/TSTextGeneralPictureVC/TSTTPInputVC/TSTTPInputVC.swift
  38. 5 4
      AIEmoji/Business/TSTextGeneralPictureVC/TSTTPInputVC/View/TSPromptTextView.swift
  39. 9 0
      AIEmoji/Business/VIewTool/TSViewTool.swift
  40. 12 4
      AIEmoji/Common/Purchase/TSPurchaseManager.swift

+ 4 - 4
AIEmoji.xcodeproj/project.pbxproj

@@ -1897,7 +1897,7 @@
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = AIEmoji/Info.plist;
-				INFOPLIST_KEY_CFBundleDisplayName = TalkTalk;
+				INFOPLIST_KEY_CFBundleDisplayName = ArtVibe;
 				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Allow us to access Photos in order to save emoji to your device.";
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
@@ -1908,7 +1908,7 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 2.1;
+				MARKETING_VERSION = 2.2;
 				PRODUCT_BUNDLE_IDENTIFIER = com.girl.music.wallpaper;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";
@@ -1936,7 +1936,7 @@
 				ENABLE_USER_SCRIPT_SANDBOXING = NO;
 				GENERATE_INFOPLIST_FILE = YES;
 				INFOPLIST_FILE = AIEmoji/Info.plist;
-				INFOPLIST_KEY_CFBundleDisplayName = TalkTalk;
+				INFOPLIST_KEY_CFBundleDisplayName = ArtVibe;
 				INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "Allow us to access Photos in order to save emoji to your device.";
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
@@ -1947,7 +1947,7 @@
 					"$(inherited)",
 					"@executable_path/Frameworks",
 				);
-				MARKETING_VERSION = 2.1;
+				MARKETING_VERSION = 2.2;
 				PRODUCT_BUNDLE_IDENTIFIER = com.girl.music.wallpaper;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				SUPPORTED_PLATFORMS = "iphoneos iphonesimulator";

+ 1 - 1
AIEmoji.xcodeproj/xcshareddata/xcschemes/AIEmoji.xcscheme

@@ -31,7 +31,7 @@
       shouldAutocreateTestPlan = "YES">
    </TestAction>
    <LaunchAction
-      buildConfiguration = "Debug"
+      buildConfiguration = "Release"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       launchStyle = "0"

BIN
AIEmoji/Assets.xcassets/App-Icon.imageset/App-Icon.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-1024.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-20@2x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-20@3x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-29@2x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-29@3x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-38@2x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-38@3x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-40@2x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-40@3x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-60@2x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-60@3x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-64@2x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-64@3x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-68@2x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-76@2x.png


BIN
AIEmoji/Assets.xcassets/AppIcon.appiconset/icon-83.5@2x.png


BIN
AIEmoji/Assets.xcassets/Common/launch_icon.imageset/launch_image@2x.png


BIN
AIEmoji/Assets.xcassets/Common/launch_icon.imageset/launch_image@3x.png


+ 2 - 2
AIEmoji/Assets.xcassets/Common/launch_icon.imageset/Contents.json → AIEmoji/Assets.xcassets/Common/launch_img.imageset/Contents.json

@@ -5,12 +5,12 @@
       "scale" : "1x"
     },
     {
-      "filename" : "launch_image@2x.png",
+      "filename" : "launch_img@2x.png",
       "idiom" : "universal",
       "scale" : "2x"
     },
     {
-      "filename" : "launch_image@3x.png",
+      "filename" : "launch_img@3x.png",
       "idiom" : "universal",
       "scale" : "3x"
     }

BIN
AIEmoji/Assets.xcassets/Common/launch_img.imageset/launch_img@2x.png


BIN
AIEmoji/Assets.xcassets/Common/launch_img.imageset/launch_img@3x.png


+ 22 - 0
AIEmoji/Assets.xcassets/VIP/btnImage_vip.imageset/Contents.json

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

BIN
AIEmoji/Assets.xcassets/VIP/btnImage_vip.imageset/btnImage_vip@2x.png


BIN
AIEmoji/Assets.xcassets/VIP/btnImage_vip.imageset/btnImage_vip@3x.png


BIN
AIEmoji/Assets.xcassets/VIP/setting_noVip.imageset/setting_noVip@2x.png


BIN
AIEmoji/Assets.xcassets/VIP/setting_noVip.imageset/setting_noVip@3x.png


BIN
AIEmoji/Assets.xcassets/VIP/setting_vip.imageset/setting_vip@2x.png


BIN
AIEmoji/Assets.xcassets/VIP/setting_vip.imageset/setting_vip@3x.png


BIN
AIEmoji/Assets.xcassets/VIP/vip_big_icon.imageset/vip_big_icon@2x.png


BIN
AIEmoji/Assets.xcassets/VIP/vip_big_icon.imageset/vip_big_icon@3x.png


+ 3 - 3
AIEmoji/Base.lproj/LaunchScreen.storyboard

@@ -16,8 +16,8 @@
                         <rect key="frame" x="0.0" y="0.0" width="393" height="852"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
-                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="launch_icon" translatesAutoresizingMaskIntoConstraints="NO" id="FfL-7D-71P">
-                                <rect key="frame" x="65" y="325" width="263.33333333333331" height="62"/>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="launch_img" translatesAutoresizingMaskIntoConstraints="NO" id="FfL-7D-71P">
+                                <rect key="frame" x="91.666666666666686" y="325" width="210" height="50"/>
                             </imageView>
                         </subviews>
                         <viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
@@ -34,6 +34,6 @@
         </scene>
     </scenes>
     <resources>
-        <image name="launch_icon" width="263.33334350585938" height="62"/>
+        <image name="launch_img" width="210" height="50"/>
     </resources>
 </document>

+ 8 - 10
AIEmoji/Business/TSGenmojiVC/TSGenmojiVC/View/TSGenmojiGennerateCell.swift

@@ -130,10 +130,11 @@ class TSGenmojiGennerateCell : TSBaseCollectionCell{
     }
 
     func getVipText()->String{
-        if kPurchaseDefault.isVip {
-            return "Generate"
-        }
-        return "Generate (\(kPurchaseDefault.freeNum(type: .generatePic)))"
+        return "Generate"
+//        if kPurchaseDefault.isVip {
+//            return "Generate"
+//        }
+//        return "Generate (\(kPurchaseDefault.freeNum(type: .generatePic)))"
     }
     
     override func renderView(with object: Any?, component: TSCollectionViewComponent, attributes: [String : Any]?) {
@@ -142,13 +143,13 @@ class TSGenmojiGennerateCell : TSBaseCollectionCell{
         var title = "Generate"
         if let itemModel = object as? TSGenmojiCoLItemModel{
             if itemModel.style == .generate{
-                title = "Generate (\(kPurchaseDefault.freeNum(type: .generatePic)))"
+//                title = "Generate (\(kPurchaseDefault.freeNum(type: .generatePic)))"
                 inspirationBtn.isHidden = true
                 customTextView.snp.updateConstraints { make in
                     make.bottom.equalTo(-31)
                 }
             }else if itemModel.style == .textPicGenerate{
-                title = "Generate (\(kPurchaseDefault.freeNum(type: .textGeneratePic)))"
+//                title = "Generate (\(kPurchaseDefault.freeNum(type: .textGeneratePic)))"
                 inspirationBtn.isHidden = false
                 customTextView.snp.updateConstraints { make in
                     make.bottom.equalTo(-50)
@@ -162,10 +163,7 @@ class TSGenmojiGennerateCell : TSBaseCollectionCell{
         }
         submitBtn.setTitle(title, for: .normal)
         
-        
-        
-        
-
+        kSetBtnVipIcon(btn: submitBtn, show: kPurchaseDefault.generateVipShow(type: .generatePic))
     }
 }
 

+ 15 - 40
AIEmoji/Business/TSPTPGeneratorVC/TSPhotoToPhotoVC/TSPhotoToPhotoVC.swift

@@ -111,10 +111,6 @@ class TSPhotoToPhotoVC: TSBaseVC {
         collectionComponent.clear()
         collectionComponent.reloadView(with:viewModel.colDataArray)
         
-//        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(clickCollectionView))
-//        tapGesture.cancelsTouchesInView = false // 确保不影响其他点击事件
-//        collectionComponent.collectionView.addGestureRecognizer(tapGesture)
-        
         contentView.addSubview(submitBtn)
         submitBtn.snp.makeConstraints { make in
             make.bottom.equalTo(-k_Height_safeAreaInsetsBottom())
@@ -127,15 +123,21 @@ class TSPhotoToPhotoVC: TSBaseVC {
     
     override func dealThings() {
         NotificationCenter.default.addObserver(self, selector: #selector(vipInfoChanged), name: .kPurchaseDidChanged, object: nil)
+        updateVipView()
     }
     
     @objc func vipInfoChanged() {
         kExecuteOnMainThread {
             //submitBtn
-            self.submitBtn.setTitle(self.getVipText(), for: .normal)
+//            self.submitBtn.setTitle(self.getVipText(), for: .normal)
+            self.updateVipView()
+        }
+    }
+    func updateVipView() {
+        kExecuteOnMainThread {
+            kSetBtnVipIcon(btn: self.submitBtn, show: kPurchaseDefault.generateVipShow(type: .picToPic))
         }
     }
-    
     @objc func clickCollectionView() {
         view.endEditing(true)
     }
@@ -145,32 +147,7 @@ class TSPhotoToPhotoVC: TSBaseVC {
 extension TSPhotoToPhotoVC {
 
     func uploadImage(){
-        
         generateImage()
-        return
-        
-//        if let upLoadImageUrl = viewModel.upLoadImageUrl, upLoadImageUrl.contains("http"){
-//            generateImage()
-//            return
-//        }
-//        
-//        viewModel.uploadImage { [weak self] progress in
-//            guard let self = self else { return }
-//            let progressInt = Int(progress * 100)
-//            let string = "\(progressInt)%"
-//            TSToastShared.showProgress(progress: progress, status: string, containerView: self.view)
-//        } completion: { [weak self]  data, error in
-//            TSToastShared.hideLoading()
-//            guard let self = self else { return }
-//            if let error = error {
-//                TSToastShared.showToast(text: error.localizedDescription)
-//            }else{
-//                if let string = data as? String {
-//                    viewModel.upLoadImageUrl = string
-//                    generateImage()
-//                }
-//            }
-//        }
     }
     
     func generateImage() {
@@ -182,11 +159,8 @@ extension TSPhotoToPhotoVC {
         
         guard let prompt = viewModel.selectedPTPStyleModel?.prompt else { return }
         guard let imageText = viewModel.selectedPTPStyleModel?.imageText else { return }
-//        guard let imageUrl = viewModel.upLoadImageUrl else { return }
-//        guard imageUrl.contains("http") else { return }
         guard let upLoadImage = viewModel.upLoadImage else { return }
-//        imageUrl = "https://be-aigc.oss-cn-shanghai.aliyuncs.com/f7e22b4e-45dc-41d7-91d4-4876c771f189.png"
-        
+
         let gennerateVC = TSPTPGeneratorVC(prompt: prompt,promptSort: imageText , imageUrl: "",upLoadImage: upLoadImage) { [weak self] model in
             guard let self = self else { return }
             if viewModel.saveModel(model:model) {
@@ -196,7 +170,7 @@ extension TSPhotoToPhotoVC {
                 collectionComponent.reloadData()
             }
             
-            vipInfoChanged()
+            updateVipView()
         }
         
         kPresentModalVC(target: self, modelVC: gennerateVC,transitionStyle: .crossDissolve)
@@ -204,10 +178,11 @@ extension TSPhotoToPhotoVC {
     
     
     func getVipText()->String{
-        if kPurchaseDefault.isVip {
-            return "Generate"
-        }
-        return "Generate (\(kPurchaseDefault.freeNum(type: .picToPic)))"
+        return "Generate"
+//        if kPurchaseDefault.isVip {
+//            return "Generate"
+//        }
+//        return "Generate (\(kPurchaseDefault.freeNum(type: .picToPic)))"
     }
 }
 

+ 13 - 2
AIEmoji/Business/TSTextGeneralPictureVC/TSTTPInputVC/TSTTPInputVC.swift

@@ -12,7 +12,7 @@ class TSTTPInputVC: TSBaseVC {
             if cusStackView.viewH > 0{
                 return cusStackView.viewH
             }
-            return 647.0
+            return 627.0
         }
     }
     
@@ -108,7 +108,12 @@ class TSTTPInputVC: TSBaseVC {
     }
     
     override func dealThings() {
-     
+        updateVipView()
+        NotificationCenter.default.addObserver(self, selector: #selector(vipInfoChanged), name: .kPurchaseDidChanged, object: nil)
+    }
+    
+    @objc func vipInfoChanged() {
+        updateVipView()
     }
     
     @objc func clickView() {
@@ -122,6 +127,11 @@ class TSTTPInputVC: TSBaseVC {
     @objc func clickPTPEnterView() {
         jumpPTPBlock?()
     }
+    func updateVipView() {
+        kExecuteOnMainThread {
+            kSetBtnVipIcon(btn: self.creatBtnView.creatBtn, show: kPurchaseDefault.generateVipShow(type: .textGeneratePic))
+        }
+    }
     
 }
 
@@ -137,6 +147,7 @@ extension TSTTPInputVC {
             guard let self = self else { return }
             model.request.promptSort = viewModel.promptText
             viewModel.saveModel(model: model)
+            updateVipView()
             reloadUIBlock?()
         }
         

+ 5 - 4
AIEmoji/Business/TSTextGeneralPictureVC/TSTTPInputVC/View/TSPromptTextView.swift

@@ -126,10 +126,11 @@ class TSPromptTextView : TSBaseView{
     }
 
     func getVipText()->String{
-        if kPurchaseDefault.isVip {
-            return "Generate"
-        }
-        return "Generate (\(kPurchaseDefault.freeNum(type: .generatePic)))"
+        return "Generate"
+//        if kPurchaseDefault.isVip {
+//            return "Generate"
+//        }
+//        return "Generate (\(kPurchaseDefault.freeNum(type: .generatePic)))"
     }
     
 }

+ 9 - 0
AIEmoji/Business/VIewTool/TSViewTool.swift

@@ -35,8 +35,12 @@ func kCreateNormalSubmitBtn(title:String, action: (() -> Void)? = nil) -> UIButt
     buttonDisBgImage = buttonDisBgImage.resizableImage(withCapInsets: UIEdgeInsets(top:24, left: 24, bottom: 24, right: 24), resizingMode: .stretch)
     btn.setBackgroundImage(buttonDisBgImage, for: .disabled)
     
+    btn.contentEdgeInsets = UIEdgeInsets(top: 0, left: 8, bottom: 0, right: 0)
+    btn.imageEdgeInsets = UIEdgeInsets(top: 0, left: -8, bottom: 0, right: 0)
+    
     return btn
 }
+
 //常用取消按钮
 func kCreateNormalCancelBtn(title:String, action: (() -> Void)? = nil) -> UIButton {
     let btn = UIButton.createButton(title:title,backgroundColor: .fromHex("#FFFFFF", alpha: 0.4),font: UIFont.font(size: 14,weight: .medium),titleColor:.white,corner: 30,action: action)
@@ -48,6 +52,11 @@ func kCreateNormalConfirmBtn(title:String, action: (() -> Void)? = nil) -> UIBut
     return btn
 }
 
+//给按钮设置 vip 图标
+func kSetBtnVipIcon(btn:UIButton,show:Bool){
+    btn.setImage(show ? UIImage(named:"btnImage_vip") : nil, for: .normal)
+}
+
 let kPlaceholderImage = UIImage(named: "placeholderImage")
 
 let kSavePhotoSuccesswShared = TSSavePhotoSuccessTool.shared

+ 12 - 4
AIEmoji/Common/Purchase/TSPurchaseManager.swift

@@ -580,10 +580,10 @@ extension PurchaseManager {
             freeDict = dict
         }else{
             freeDict = [
-                VipFreeNumType.generatePic.rawValue:3,
-                VipFreeNumType.aichat.rawValue:3,
-                VipFreeNumType.textGeneratePic.rawValue:3,
-                VipFreeNumType.picToPic.rawValue:3
+                VipFreeNumType.generatePic.rawValue:1,
+                VipFreeNumType.aichat.rawValue:1,
+                VipFreeNumType.textGeneratePic.rawValue:1,
+                VipFreeNumType.picToPic.rawValue:1
             ]
             saveForFree()
         }
@@ -600,6 +600,14 @@ extension PurchaseManager {
         }
         return false
     }
+    
+    /// 是否展示生成类的会员图标
+    func generateVipShow(type:VipFreeNumType) -> Bool{
+        if isVip == false, freeNum(type: type) > 0 {
+            return false
+        }
+        return true
+    }
 }