TSEffectPreviewVC.swift 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. //
  2. // TSEffectPreviewVC.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by 100Years on 2025/8/12.
  6. //
  7. class TSEffectPreviewVC: TSBaseVC {
  8. var browserPageVC:TSEffectPreviewPageVC
  9. public init(dataItems: [Any], startIndex: Int = 0) {
  10. browserPageVC = TSEffectPreviewPageVC(dataItems: dataItems, startIndex: startIndex)
  11. super.init()
  12. }
  13. @MainActor required init?(coder: NSCoder) {
  14. fatalError("init(coder:) has not been implemented")
  15. }
  16. lazy var styleBarView: TSEffectPreviewStyleView = {
  17. let styleBarView = TSEffectPreviewStyleView()
  18. styleBarView.modelArray = browserPageVC.dataItems as! [TSDiscoverItemModel]
  19. styleBarView.setSelectedIndex(selectedIndex: browserPageVC.currentIndex, animated: false)
  20. styleBarView.selsetedBlock = { [weak self] model,index in
  21. guard let self = self else { return }
  22. if index == browserPageVC.currentIndex {
  23. return
  24. }
  25. browserPageVC.goToPage(at: index, animated: true)
  26. }
  27. return styleBarView
  28. }()
  29. lazy var submitBtn: UIButton = {
  30. let submitBtn = kCreateNormalSubmitBtn(title: "Generate".localized) { [weak self] in
  31. guard let self = self else { return }
  32. pushUploadPhotoVC()
  33. }
  34. return submitBtn
  35. }()
  36. override func createView() {
  37. let imageView = UIImageView.createImageView(image: .navShadow,contentMode: .scaleToFill)
  38. navBarContentView.addSubview(imageView)
  39. imageView.snp.makeConstraints { make in
  40. make.edges.equalToSuperview()
  41. }
  42. addNormalNavBarView()
  43. setPageTitle("")
  44. contentView.snp.updateConstraints { make in
  45. make.top.equalTo(0)
  46. }
  47. self.addChild(browserPageVC)
  48. contentView.addSubview(browserPageVC.view)
  49. let bottomShadowImageView = UIImageView.createImageView(image: .bottomShadow,contentMode: .scaleToFill)
  50. contentView.addSubview(bottomShadowImageView)
  51. bottomShadowImageView.snp.makeConstraints { make in
  52. make.bottom.leading.trailing.equalToSuperview()
  53. make.height.equalTo(268*kDesignScale)
  54. }
  55. contentView.addSubview(submitBtn)
  56. submitBtn.snp.makeConstraints { make in
  57. make.centerX.equalToSuperview()
  58. make.width.equalTo(250*kDesignScale)
  59. make.height.equalTo(48)
  60. make.bottom.equalTo(-12-k_Height_safeAreaInsetsBottom())
  61. }
  62. contentView.addSubview(styleBarView)
  63. styleBarView.snp.makeConstraints { make in
  64. make.leading.trailing.equalToSuperview()
  65. make.bottom.equalTo(submitBtn.snp.top).offset(-12)
  66. }
  67. }
  68. override func createFrame() {
  69. browserPageVC.view.snp.makeConstraints { make in
  70. make.edges.equalToSuperview()
  71. }
  72. }
  73. override func dealThings() {
  74. browserPageVC.currentIndexChanged = { [weak self] index in
  75. guard let self = self else { return }
  76. styleBarView.setSelectedIndex(selectedIndex: browserPageVC.currentIndex, animated: true)
  77. }
  78. NotificationCenter.default.addObserver(self, selector: #selector(updateVipView), name: .kPurchaseDidChanged, object: nil)
  79. updateVipView()
  80. }
  81. }
  82. extension TSEffectPreviewVC {
  83. var currentIndex:Int{
  84. return browserPageVC.currentIndex
  85. }
  86. var currentModel:TSDiscoverItemModel?{
  87. if let model = browserPageVC.dataItems.safeObj(At: currentIndex) as? TSDiscoverItemModel{
  88. return model
  89. }
  90. return nil
  91. }
  92. var generatorStyle:TSGeneratorImageStyle{
  93. return currentModel?.style ?? .ptp
  94. }
  95. @objc func updateVipView() {
  96. kMainAsync {
  97. kSetBtnVipIcon(btn: self.submitBtn, show: kPurchaseBusiness.generateVipShow(type: self.generatorStyle == .creatVideo ? .generalVideo :.general))
  98. }
  99. }
  100. func pushUploadPhotoVC(){
  101. guard let itemModel = currentModel else { return }
  102. guard let disCoverItemModels = browserPageVC.dataItems as? [TSDiscoverItemModel] else { return }
  103. TSAIListVC.enterSelectPhotos(target: self,style: itemModel.style) { images in
  104. self.push(TSAIUploadPhotoVC(titleString: itemModel.name,upLoadImage: images.first!, generatorStyle: itemModel.style,disCoverItemModel: itemModel,disCoverItemModels:disCoverItemModels),animated: false) {
  105. TSAIListVC.closeSelectPhotos()
  106. }
  107. }
  108. }
  109. }