TSButton.swift 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. //
  2. // TSButton.swift
  3. // AIRingtone
  4. //
  5. // Created by 100Years on 2025/3/13.
  6. //
  7. class TSAppBtn: UIButton {
  8. }
  9. class TSNormalSubmitBtn: TSAppBtn {
  10. override var isEnabled: Bool {
  11. didSet {
  12. // 根据 isEnabled 的值设置 alpha
  13. self.alpha = isEnabled ? 1.0 : 0.6
  14. }
  15. }
  16. }
  17. class TSNormalCancelBtn: TSAppBtn {
  18. }
  19. ////常用取消按钮
  20. //func kCreateNormalCancelBtn(title:String, action: (() -> Void)? = nil) -> UIButton {
  21. // 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)
  22. // return btn
  23. //}
  24. ////常用确定按钮
  25. //func kCreateNormalConfirmBtn(title:String, action: (() -> Void)? = nil) -> UIButton {
  26. // let btn = UIButton.createButton(title:title,backgroundImage:UIImage(named: "submit_btn_small_bg"),font: UIFont.font(size: 14,weight: .medium),titleColor:.white,corner: 30,action: action)
  27. // return btn
  28. //}
  29. class TSAppBtnView: TSBaseView {
  30. enum ViewStyle {
  31. case normal
  32. case generate //创造类的按钮
  33. case themeSet //主题页设置按钮
  34. }
  35. var viewH:CGFloat = 64
  36. var style:ViewStyle = .normal
  37. var vipFreeNumType:VipFreeNumType = .none{
  38. didSet{
  39. updateVipView()
  40. }
  41. }
  42. var clickBlock:(()->Void)?
  43. //###################################### Button ######################################
  44. var button:UIButton = UIButton()
  45. override func creatUI() {
  46. }
  47. override func dealThings(){
  48. }
  49. func setUpButton(style:ViewStyle,vipFreeNumType:VipFreeNumType,clickBlock: @escaping () -> Void) {
  50. self.style = style
  51. self.vipFreeNumType = vipFreeNumType
  52. self.clickBlock = clickBlock
  53. contentView.removeAllSubViews()
  54. switch style {
  55. case .generate:
  56. setUpGenerate()
  57. launchVipLogic()
  58. case .themeSet:
  59. setUpThemeSet()
  60. default:
  61. break
  62. }
  63. }
  64. }
  65. extension TSAppBtnView{
  66. func launchVipLogic(){
  67. //监听 Vip 变化
  68. NotificationCenter.default.addObserver(forName: .kPurchaseDidChanged, object: nil, queue: OperationQueue.main) { [weak self] notification in
  69. guard let self = self else { return }
  70. updateVipView()
  71. }
  72. NotificationCenter.default.addObserver(forName: .kVipFreeNumChanged, object: nil, queue: OperationQueue.main) { [weak self] notification in
  73. guard let self = self else { return }
  74. if let userInfo = notification.userInfo as? [String: VipFreeNumType], let myEnum = userInfo["VipFreeNumType"] {
  75. if myEnum == self.vipFreeNumType {
  76. self.updateVipView()
  77. }
  78. }
  79. }
  80. updateVipView()
  81. }
  82. func updateVipView() {
  83. switch style {
  84. case .generate:
  85. setVip(vip: kPurchaseToolShared.generateVipShow(type: self.vipFreeNumType))
  86. default:
  87. break
  88. }
  89. }
  90. func setBtnEnabled(isEnabled:Bool) {
  91. button.isEnabled = isEnabled
  92. button.alpha = isEnabled ? 1.0 : 0.6
  93. }
  94. func setVip(vip:Bool) {
  95. if vip {
  96. button.setImage(UIImage(named: "vip_icon_white"), for: .normal)
  97. }else{
  98. button.setImage(nil, for: .normal)
  99. }
  100. }
  101. }
  102. //创造按钮
  103. extension TSAppBtnView{
  104. func setUpGenerate() {
  105. button = kCreateNormalSubmitBtn(
  106. title: "Create Now".localized,
  107. frame: CGRectMake(0, 0, k_ScreenWidth - 32, 48),
  108. action: { [weak self] in
  109. guard let self = self else { return }
  110. if let vc = WindowHelper.getCurrentViewController() {
  111. if kPurchaseToolShared.kJudgeVipFreeType(vipFreeNumType: vipFreeNumType, vc: vc){ return }
  112. }
  113. clickBlock?()
  114. })
  115. contentView.addSubview(button)
  116. button.snp.makeConstraints { make in
  117. make.center.equalToSuperview()
  118. make.width.equalTo(button.width)
  119. make.height.equalTo(button.height)
  120. }
  121. viewH = 64
  122. }
  123. func setUpThemeSet() {
  124. button = kCreateNormalSubmitBtn(title: "Set Now".localized, frame: CGRectMake(0, 0, 200, 48),action: { [weak self] in
  125. guard let self = self else { return }
  126. clickBlock?()
  127. })
  128. contentView.addSubview(button)
  129. button.snp.makeConstraints { make in
  130. make.center.equalToSuperview()
  131. make.width.equalTo(button.width)
  132. make.height.equalTo(button.height)
  133. }
  134. }
  135. }
  136. //创造按钮
  137. extension TSAppBtnView{
  138. func loadingAnimation(loading:Bool) {
  139. if loading {
  140. button.setImage(UIImage(named: "generated_loading"), for: .normal)
  141. button.imageView?.startRotating()
  142. }else {
  143. button.imageView?.stopRotating()
  144. updateVipView()
  145. }
  146. }
  147. }
  148. //常用提交按钮
  149. func kCreateNormalSubmitBtn(title:String,frame:CGRect,action: (() -> Void)? = nil) -> UIButton {
  150. let btn = TSNormalSubmitBtn()
  151. btn.setUpButton(title:title,font: UIFont.font(size: 16,weight: .regular),titleColor:.white,corner: 24,action: action)
  152. btn.setTitleImageSpace(spacing: 4)
  153. btn.frame = frame
  154. btn.addGradientBg(colors: ["#E961F6".uiColor.cgColor,"#7E57F4".uiColor.cgColor])
  155. return btn
  156. }