|
@@ -24,6 +24,45 @@ class TSAILIstVC: TSBaseVC {
|
|
|
kPushVC(target: self, modelVC: TSTextGeneralPictureVC())
|
|
|
}))
|
|
|
|
|
|
+ sectionModel.addSubItemModel(
|
|
|
+ createItemModel(
|
|
|
+ leftImageName:"ailist_pretty",
|
|
|
+ leftTitle: "Be Pretty".localized,
|
|
|
+ leftSubTitle: "".localized,
|
|
|
+ rightViewStyle: 0,
|
|
|
+ tapBlock: { [weak self] model, _, _ in
|
|
|
+ guard let self = self else { return }
|
|
|
+
|
|
|
+ var config = TSAIListHintBaseVC.Config.defaultConfig
|
|
|
+ config.imageMaxBitSize = kUploadImageMaxBit5Size
|
|
|
+ enterSelectPhotos(
|
|
|
+ userDefaultsKey: "isFirstAIPrettyPhoto",
|
|
|
+ maxBitSize: kUploadImageMaxBit5Size,
|
|
|
+ config:config
|
|
|
+ ) { image in
|
|
|
+ let baseVc = TSAIUploadPhotoBaseVC(titleString: model.leftTitle ?? "",upLoadImage: image,imageMaxBitSize: kUploadImageMaxBit5Size, generatorStyle: .pretty)
|
|
|
+ kPushVC(target: self, modelVC: baseVc)
|
|
|
+ }
|
|
|
+ }))
|
|
|
+
|
|
|
+ sectionModel.addSubItemModel(
|
|
|
+ createItemModel(
|
|
|
+ leftImageName:"ailist_eyeOpen",
|
|
|
+ leftTitle: "Open eyes".localized,
|
|
|
+ leftSubTitle: "".localized,
|
|
|
+ rightViewStyle: 0,
|
|
|
+ tapBlock: { [weak self] model, _, _ in
|
|
|
+ guard let self = self else { return }
|
|
|
+ enterSelectPhotos(
|
|
|
+ userDefaultsKey: "isFirstAIEyeOpenPhoto",
|
|
|
+ maxBitSize: kUploadImageMaxBit10Size,
|
|
|
+ config:.defaultConfig
|
|
|
+ ) { image in
|
|
|
+ let baseVc = TSAIUploadPhotoBaseVC(titleString: model.leftTitle ?? "",upLoadImage: image,imageMaxBitSize: kUploadImageMaxBit10Size, generatorStyle: .eyeOpen)
|
|
|
+ kPushVC(target: self, modelVC: baseVc)
|
|
|
+ }
|
|
|
+ }))
|
|
|
+
|
|
|
sectionModel.addSubItemModel(
|
|
|
createItemModel(
|
|
|
leftImageName:"aiList_restOldPhoto",
|
|
@@ -32,86 +71,109 @@ class TSAILIstVC: TSBaseVC {
|
|
|
rightViewStyle: 0,
|
|
|
tapBlock: { [weak self] model, _, _ in
|
|
|
guard let self = self else { return }
|
|
|
- enterSelectPhotos(userDefaultsKey: "isFirstAIChangeRestOldPhoto") { image in
|
|
|
- let baseVc = TSAIUploadPhotoBaseVC(titleString: model.leftTitle ?? "",upLoadImage: image, generatorStyle: .oldPhoto)
|
|
|
+ enterSelectPhotos(
|
|
|
+ userDefaultsKey: "isFirstAIChangeRestOldPhoto",
|
|
|
+ maxBitSize: kUploadImageMaxBit10Size,
|
|
|
+ config:.defaultConfig
|
|
|
+ ) { image in
|
|
|
+ let baseVc = TSAIUploadPhotoBaseVC(titleString: model.leftTitle ?? "",upLoadImage: image,imageMaxBitSize: kUploadImageMaxBit10Size, generatorStyle: .oldPhoto)
|
|
|
kPushVC(target: self, modelVC: baseVc)
|
|
|
}
|
|
|
}))
|
|
|
|
|
|
sectionModel.addSubItemModel(
|
|
|
createItemModel(
|
|
|
- leftImageName:"aiList_oldPeople",
|
|
|
- leftTitle: "Predicting Old Age".localized,
|
|
|
- leftSubTitle: "AI predicts what you look like in your old age".localized,
|
|
|
+ leftImageName:"aiList_hairColor",
|
|
|
+ leftTitle: "Transform Hair Color".localized,
|
|
|
+ leftSubTitle: "Find out what hair color suits you".localized,
|
|
|
rightViewStyle: 0,
|
|
|
tapBlock: { [weak self] model, _, _ in
|
|
|
guard let self = self else { return }
|
|
|
- enterSelectPhotos(userDefaultsKey: "isFirstAIListAgeOldHintVC") { image in
|
|
|
- let baseVc = TSAIUploadPhotoBaseVC(titleString: model.leftTitle ?? "",upLoadImage: image, generatorStyle: .ageOld)
|
|
|
+ enterSelectPhotos(
|
|
|
+ userDefaultsKey: "isFirstAIChangeHairColor",
|
|
|
+ maxBitSize: kUploadImageMaxBit10Size,
|
|
|
+ config:.changeHairConfig
|
|
|
+ ) { image in
|
|
|
+ let baseVc = TSAIChangeEmoteVC(upLoadImage: image, style: .changehairColor)
|
|
|
kPushVC(target: self, modelVC: baseVc)
|
|
|
}
|
|
|
}))
|
|
|
|
|
|
sectionModel.addSubItemModel(
|
|
|
createItemModel(
|
|
|
- leftImageName:"ailist_child",
|
|
|
- leftTitle: "Back to Baby".localized,
|
|
|
- leftSubTitle: "AI helps you go back to being a baby".localized,
|
|
|
+ leftImageName:"aiList_hair",
|
|
|
+ leftTitle: "Hair Salon".localized,
|
|
|
+ leftSubTitle: "Try new hair looks for every style".localized,
|
|
|
rightViewStyle: 0,
|
|
|
tapBlock: { [weak self] model, _, _ in
|
|
|
guard let self = self else { return }
|
|
|
-
|
|
|
- enterSelectPhotos(userDefaultsKey: "isFirstAIListAgeChildHintVC") { image in
|
|
|
- let baseVc = TSAIUploadPhotoBaseVC(titleString: model.leftTitle ?? "",upLoadImage: image, generatorStyle: .ageChild)
|
|
|
+ enterSelectPhotos(
|
|
|
+ userDefaultsKey: "isFirstAIChangeHair",
|
|
|
+ maxBitSize: kUploadImageMaxBit10Size,
|
|
|
+ config:.changeHairConfig
|
|
|
+ ) { image in
|
|
|
+ let baseVc = TSAIChangeEmoteVC(upLoadImage: image, style: .changehair)
|
|
|
kPushVC(target: self, modelVC: baseVc)
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}))
|
|
|
|
|
|
sectionModel.addSubItemModel(
|
|
|
createItemModel(
|
|
|
- leftImageName:"aiList_emote",
|
|
|
- leftTitle: "Change Emotion".localized,
|
|
|
- leftSubTitle: "Change your facial emotion in one click".localized,
|
|
|
+ leftImageName:"aiList_oldPeople",
|
|
|
+ leftTitle: "Predicting Old Age".localized,
|
|
|
+ leftSubTitle: "AI predicts what you look like in your old age".localized,
|
|
|
rightViewStyle: 0,
|
|
|
tapBlock: { [weak self] model, _, _ in
|
|
|
guard let self = self else { return }
|
|
|
- enterSelectPhotos(userDefaultsKey: "isFirstAIChangeEmote") { image in
|
|
|
- let baseVc = TSAIChangeEmoteVC(upLoadImage: image, style: .changeEmote)
|
|
|
+ enterSelectPhotos(
|
|
|
+ userDefaultsKey: "isFirstAIListAgeOldHintVC",
|
|
|
+ maxBitSize: kUploadImageMaxBit10Size,
|
|
|
+ config:.defaultConfig
|
|
|
+ ) { image in
|
|
|
+ let baseVc = TSAIUploadPhotoBaseVC(titleString: model.leftTitle ?? "",upLoadImage: image,imageMaxBitSize: kUploadImageMaxBit10Size, generatorStyle: .ageOld)
|
|
|
kPushVC(target: self, modelVC: baseVc)
|
|
|
}
|
|
|
}))
|
|
|
|
|
|
-
|
|
|
sectionModel.addSubItemModel(
|
|
|
createItemModel(
|
|
|
- leftImageName:"aiList_hairColor",
|
|
|
- leftTitle: "Transform Hair Color".localized,
|
|
|
- leftSubTitle: "Find out what hair color suits you".localized,
|
|
|
+ leftImageName:"ailist_child",
|
|
|
+ leftTitle: "Back to Baby".localized,
|
|
|
+ leftSubTitle: "AI helps you go back to being a baby".localized,
|
|
|
rightViewStyle: 0,
|
|
|
tapBlock: { [weak self] model, _, _ in
|
|
|
guard let self = self else { return }
|
|
|
- enterSelectPhotos(userDefaultsKey: "isFirstAIChangeHairColor") { image in
|
|
|
- let baseVc = TSAIChangeEmoteVC(upLoadImage: image, style: .changehairColor)
|
|
|
+ enterSelectPhotos(
|
|
|
+ userDefaultsKey: "isFirstAIListAgeChildHintVC",
|
|
|
+ maxBitSize: kUploadImageMaxBit10Size,
|
|
|
+ config:.defaultConfig
|
|
|
+ ) { image in
|
|
|
+ let baseVc = TSAIUploadPhotoBaseVC(titleString: model.leftTitle ?? "",upLoadImage: image,imageMaxBitSize: kUploadImageMaxBit10Size, generatorStyle: .ageChild)
|
|
|
kPushVC(target: self, modelVC: baseVc)
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}))
|
|
|
|
|
|
sectionModel.addSubItemModel(
|
|
|
createItemModel(
|
|
|
- leftImageName:"aiList_hair",
|
|
|
- leftTitle: "Hair Salon".localized,
|
|
|
- leftSubTitle: "Try new hair looks for every style".localized,
|
|
|
+ leftImageName:"aiList_emote",
|
|
|
+ leftTitle: "Change Emotion".localized,
|
|
|
+ leftSubTitle: "Change your facial emotion in one click".localized,
|
|
|
rightViewStyle: 0,
|
|
|
tapBlock: { [weak self] model, _, _ in
|
|
|
guard let self = self else { return }
|
|
|
- enterSelectPhotos(userDefaultsKey: "isFirstAIChangeHair") { image in
|
|
|
- let baseVc = TSAIChangeEmoteVC(upLoadImage: image, style: .changehair)
|
|
|
+ enterSelectPhotos(
|
|
|
+ userDefaultsKey: "isFirstAIChangeEmote",
|
|
|
+ maxBitSize: kUploadImageMaxBit10Size,
|
|
|
+ config:.defaultConfig
|
|
|
+ ) { image in
|
|
|
+ let baseVc = TSAIChangeEmoteVC(upLoadImage: image, style: .changeEmote)
|
|
|
kPushVC(target: self, modelVC: baseVc)
|
|
|
}
|
|
|
}))
|
|
|
|
|
|
+
|
|
|
sectionModel.addSubItemModel(
|
|
|
createItemModel(
|
|
|
leftImageName:"aiList_emoji",
|
|
@@ -161,9 +223,11 @@ class TSAILIstVC: TSBaseVC {
|
|
|
lazy var layout: UICollectionViewFlowLayout = {
|
|
|
let layout = UICollectionViewFlowLayout()
|
|
|
layout.scrollDirection = .vertical
|
|
|
- layout.itemSize = CGSize(width: k_ScreenWidth-32, height: 180*kDesignScale)
|
|
|
- layout.minimumInteritemSpacing = 0.0
|
|
|
- layout.minimumLineSpacing = 16.0
|
|
|
+ let w = (k_ScreenWidth-32-10)/2
|
|
|
+ let h = kGetScaleHeight(originalSize: CGSizeMake(167, 236), width: w)
|
|
|
+ layout.itemSize = CGSize(width: w, height: h)
|
|
|
+ layout.minimumInteritemSpacing = 9.0
|
|
|
+ layout.minimumLineSpacing = 12.0
|
|
|
|
|
|
layout.sectionInset = UIEdgeInsets(top: 16, left: 16, bottom: 16, right: 16)
|
|
|
return layout
|
|
@@ -265,25 +329,18 @@ extension TSAILIstVC: UICollectionViewDataSource ,UICollectionViewDelegate {
|
|
|
|
|
|
extension TSAILIstVC{
|
|
|
|
|
|
- func enterSelectPhotos(userDefaultsKey:String,complete: @escaping (UIImage)->Void){
|
|
|
+ func enterSelectPhotos(userDefaultsKey:String,maxBitSize:Int,config:TSAIListHintBaseVC.Config,complete: @escaping (UIImage)->Void){
|
|
|
TSAIListHintBaseVC.userDefaultsKey = userDefaultsKey
|
|
|
-
|
|
|
if TSAIListHintBaseVC.isShowUploadImageHint{
|
|
|
TSAIListHintBaseVC.isShowUploadImageHint = false
|
|
|
- self.presentModalHintVC(userDefaultsKey: userDefaultsKey,complete:complete)
|
|
|
+ self.presentModalHintVC(config:config,complete:complete)
|
|
|
}else {
|
|
|
- self.pickSinglePhoto(complete:complete)
|
|
|
+ self.pickSinglePhoto(maxBitSize:maxBitSize,complete:complete)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
|
|
|
- func presentModalHintVC(userDefaultsKey:String,complete:@escaping (UIImage)->Void){
|
|
|
-
|
|
|
- var config: TSAIListHintBaseVC.Config = .defaultConfig
|
|
|
- if userDefaultsKey == "isFirstAIChangeHair" || userDefaultsKey == "isFirstAIChangeHairColor"{
|
|
|
- config = .changeHairConfig
|
|
|
- }
|
|
|
-
|
|
|
+ func presentModalHintVC(config:TSAIListHintBaseVC.Config,complete:@escaping (UIImage)->Void){
|
|
|
let vc = TSAIListHintBaseVC(config: config) { image in
|
|
|
if let image = image {
|
|
|
complete(image)
|
|
@@ -294,8 +351,8 @@ extension TSAILIstVC{
|
|
|
kPresentModalVC(target: self, modelVC: vc,transitionStyle: .crossDissolve)
|
|
|
}
|
|
|
|
|
|
- func pickSinglePhoto(complete: @escaping (UIImage)->Void) {
|
|
|
- photoPickerManager.pickSinglePhoto(maxBitSize: kUploadImageMaxBit10Size) { image, errorString in
|
|
|
+ func pickSinglePhoto(maxBitSize:Int,complete: @escaping (UIImage)->Void) {
|
|
|
+ photoPickerManager.pickSinglePhoto(maxBitSize: maxBitSize) { image, errorString in
|
|
|
if let errorString = errorString {
|
|
|
TSToastShared.showToast(text: errorString)
|
|
|
}else if let image = image {
|