|
@@ -26,11 +26,39 @@ class TSTTPInputVC: TSBaseVC {
|
|
|
}
|
|
|
return viewModel
|
|
|
}()
|
|
|
+ //###################################### 导航栏 view ######################################
|
|
|
+
|
|
|
+ lazy var vipBtn: UIButton = {
|
|
|
+ let vipBtn = UIButton.createButton(image: UIImage(named: "nav_vip")) { [weak self] in
|
|
|
+ guard let self = self else { return }
|
|
|
+ TSPurchaseVC.show(target: self) {}
|
|
|
+ }
|
|
|
+ return vipBtn
|
|
|
+ }()
|
|
|
|
|
|
+
|
|
|
+ lazy var navBarView: TSBaseNavContentBarView = {
|
|
|
+ let navBarView = TSBaseNavContentBarView()
|
|
|
+
|
|
|
+ let titleImageView = UIImageView.createImageView(imageName: "nav_title_ttp",contentMode: .scaleToFill)
|
|
|
+ navBarView.barView.addSubview(titleImageView)
|
|
|
+ titleImageView.snp.makeConstraints { make in
|
|
|
+ make.centerY.equalToSuperview()
|
|
|
+ make.left.equalTo(16)
|
|
|
+ }
|
|
|
+
|
|
|
+ navBarView.barView.addSubview(vipBtn)
|
|
|
+ vipBtn.snp.makeConstraints { make in
|
|
|
+ make.centerY.equalToSuperview()
|
|
|
+ make.trailing.equalTo(-16)//(-60)
|
|
|
+ make.width.height.equalTo(24)
|
|
|
+ }
|
|
|
+
|
|
|
+ return navBarView
|
|
|
+ }()
|
|
|
//###################################### cusStackView ######################################
|
|
|
lazy var cusStackView: TSCustomStackView = {
|
|
|
let cusStackView = TSCustomStackView(axis: .vertical,spacing: 0)
|
|
|
- cusStackView.scrollView.isScrollEnabled = false
|
|
|
return cusStackView
|
|
|
}()
|
|
|
|
|
@@ -42,7 +70,7 @@ class TSTTPInputVC: TSBaseVC {
|
|
|
}
|
|
|
promptTextView.sendBolck = { [weak self] text in
|
|
|
guard let self = self else { return }
|
|
|
- if creatBtnView.creatBtn.isEnabled {
|
|
|
+ if creatBtnView.isEnabled {
|
|
|
generateImage()
|
|
|
}
|
|
|
}
|
|
@@ -50,17 +78,7 @@ class TSTTPInputVC: TSBaseVC {
|
|
|
}()
|
|
|
|
|
|
//###################################### Prompt类型 ######################################
|
|
|
- lazy var promptStyleView: TSTTPStyleView = {
|
|
|
- let promptStyleView = TSTTPStyleView()
|
|
|
- promptStyleView.currentIndexPath = IndexPath(item: viewModel.selectedStyleIndex, section: 0)
|
|
|
- promptStyleView.dataArray = viewModel.ptpStyleModels
|
|
|
- promptStyleView.selectedValueBlock = { [weak self] model in
|
|
|
- guard let self = self else { return }
|
|
|
- viewModel.selectPromptModel = model
|
|
|
- updateVipView()
|
|
|
- }
|
|
|
- return promptStyleView
|
|
|
- }()
|
|
|
+ lazy var promptStyleView: TSTTPStyleView = creatPromptStyleView()
|
|
|
|
|
|
//###################################### 尺寸类型 ######################################
|
|
|
lazy var ratioStyleView: TSTTPRatioView = {
|
|
@@ -74,26 +92,48 @@ class TSTTPInputVC: TSBaseVC {
|
|
|
}
|
|
|
return ratioStyleView
|
|
|
}()
|
|
|
+ //###################################### collectionComponent ######################################
|
|
|
+ var collectionViewObserver: CollectionViewObserver!
|
|
|
+ let collectionViewBtootm:CGFloat = 80
|
|
|
+ lazy var collectionComponent: TSCollectionViewComponent = creatCollectionComponent()
|
|
|
+
|
|
|
//###################################### Button ######################################
|
|
|
- lazy var creatBtnView:TSGeneralBtnView = {
|
|
|
- let creatBtnView = TSGeneralBtnView {[weak self] in
|
|
|
+ lazy var creatBtnView:TSAppBtnView = {
|
|
|
+ let creatBtnView = TSAppBtnView()
|
|
|
+ creatBtnView.setUpButton(style: .generate, vipFreeNumType: .textGeneratePic) { [weak self] in
|
|
|
guard let self = self else { return }
|
|
|
generateImage()
|
|
|
}
|
|
|
creatBtnView.setBtnEnabled(isEnabled: false)
|
|
|
+ creatBtnView.isIconVipBlock = { [weak self] in
|
|
|
+ guard let self = self else { return false}
|
|
|
+ var showVip = kPurchaseDefault.generateVipShow(type: .picToPic)
|
|
|
+ if showVip == false {
|
|
|
+ showVip = self.viewModel.selectPromptModel.isVip
|
|
|
+ }
|
|
|
+ return showVip
|
|
|
+ }
|
|
|
+ creatBtnView.isClickVipBlock = { [weak self] in
|
|
|
+ guard let self = self else { return false}
|
|
|
+ var isVip = kPurchaseDefault.freeNumAvailable(type: .picToPic) == false
|
|
|
+ if viewModel.selectPromptModel.isVip == true {
|
|
|
+ isVip = true
|
|
|
+ }
|
|
|
+ return isVip
|
|
|
+ }
|
|
|
return creatBtnView
|
|
|
}()
|
|
|
|
|
|
-
|
|
|
override func createView() {
|
|
|
- view.backgroundColor = .clear
|
|
|
-
|
|
|
- setNavBarViewHidden(true)
|
|
|
-
|
|
|
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(cusStackView)
|
|
|
cusStackView.snp.makeConstraints { make in
|
|
|
make.top.leading.bottom.trailing.equalTo(0)
|
|
@@ -102,17 +142,23 @@ class TSTTPInputVC: TSBaseVC {
|
|
|
cusStackView.addSubviewToStack(promptTextView)
|
|
|
cusStackView.addSubviewToStack(promptStyleView)
|
|
|
cusStackView.addSubviewToStack(ratioStyleView)
|
|
|
- cusStackView.addSpacing(length: 16)//增加 16 的间隔
|
|
|
- cusStackView.addSubviewToStack(creatBtnView)
|
|
|
+ cusStackView.addSubviewToStack(collectionComponent.collectionView, length: 0)
|
|
|
+ cusStackView.addSpacing(length: collectionViewBtootm)
|
|
|
+
|
|
|
+ contentView.addSubview(creatBtnView)
|
|
|
creatBtnView.snp.makeConstraints { make in
|
|
|
- make.height.equalTo(creatBtnView.viewH)
|
|
|
- make.width.equalTo(k_ScreenWidth)
|
|
|
+ make.bottom.equalTo(-16)
|
|
|
+ make.leading.equalTo(16)
|
|
|
+ make.trailing.equalTo(-16)
|
|
|
+ make.height.equalTo(48)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
override func dealThings() {
|
|
|
updateVipView()
|
|
|
NotificationCenter.default.addObserver(self, selector: #selector(vipInfoChanged), name: .kPurchaseDidChanged, object: nil)
|
|
|
+ observerCollectionView()
|
|
|
+ updateListDataView()
|
|
|
}
|
|
|
|
|
|
@objc func vipInfoChanged() {
|
|
@@ -123,39 +169,31 @@ class TSTTPInputVC: TSBaseVC {
|
|
|
view.endEditing(true)
|
|
|
}
|
|
|
|
|
|
- @objc func clickCollectionView() {
|
|
|
- view.endEditing(true)
|
|
|
- }
|
|
|
-
|
|
|
func updateVipView() {
|
|
|
kExecuteOnMainThread {
|
|
|
- var showVip = kPurchaseDefault.generateVipShow(type: .textGeneratePic)
|
|
|
- if showVip == false {
|
|
|
- showVip = self.viewModel.selectPromptModel?.isVip ?? false
|
|
|
- }
|
|
|
- kSetBtnVipIcon(btn: self.creatBtnView.creatBtn, show: showVip)
|
|
|
+ self.vipBtn.isHidden = PurchaseManager.default.isVip
|
|
|
+ self.creatBtnView.updateVipView()
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
}
|
|
|
|
|
|
extension TSTTPInputVC {
|
|
|
func generateImage() {
|
|
|
|
|
|
- guard let generateStyleModel = viewModel.generateStyleModel else { return }
|
|
|
-
|
|
|
var isVip = kPurchaseDefault.freeNumAvailable(type: .textGeneratePic) == false
|
|
|
- if viewModel.selectPromptModel?.isVip == true {
|
|
|
+ if viewModel.selectPromptModel.isVip == true {
|
|
|
isVip = true
|
|
|
}
|
|
|
|
|
|
if kJudgeVip(externalBool: isVip, vc: self) { return } //判断 vip
|
|
|
- let gennerateVC = TSTextPicGennerateVC(generateStyleModel: generateStyleModel) {[weak self] model in
|
|
|
+ let gennerateVC = TSTextPicGennerateVC(generateStyleModel: viewModel.generateStyleModel) {[weak self] model in
|
|
|
guard let self = self else { return }
|
|
|
model.request.promptSort = viewModel.promptText
|
|
|
viewModel.saveModel(model: model)
|
|
|
updateVipView()
|
|
|
reloadUIBlock?()
|
|
|
+ updateListDataView()
|
|
|
}
|
|
|
|
|
|
kPresentModalVC(target: self, modelVC: gennerateVC,transitionStyle: .crossDissolve)
|