123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- //
- // TSAppBtnView.swift
- // AIEmoji
- //
- // Created by 100Years on 2025/4/23.
- //
- class TSAppBtn: UIButton {
-
- }
- class TSNormalSubmitBtn: TSAppBtn {
- // override var isEnabled: Bool {
- // didSet {
- // // 根据 isEnabled 的值设置 alpha
- // self.alpha = isEnabled ? 1.0 : 0.6
- // }
- // }
- }
- class TSNormalCancelBtn: TSAppBtn {
- }
- class TSAppBtnView: TSBaseView {
- enum ViewStyle {
- case generate //创造类的按钮
- }
-
- var viewH:CGFloat = 64
- var style:ViewStyle = .generate
- var vipFreeNumType:VipFreeNumType = .none{
- didSet{
- updateVipView()
- }
- }
- var clickBlock:(()->Void)?
- var btnFrame:CGRect?
- var isIconVipBlock:(()->Bool)? //vip 图片显示
- var isClickVipBlock:(()->Bool)? //点击是,是否需要弹出 vip
-
-
-
- var loading:Bool = false{
- willSet {
- if loading != newValue {
- loadingAnimation(loading: newValue)
-
- if loading == false {
- self.resetBtnText()
- }
- }
- }
- }
- //###################################### Button ######################################
- var button:UIButton = UIButton()
- var title:String = ""
- override func creatUI() {
- }
-
- override func dealThings(){
-
- }
- func setUpButton(style:ViewStyle,vipFreeNumType:VipFreeNumType = .none,btnFrame:CGRect? = nil,clickBlock: @escaping () -> Void) {
- self.btnFrame = btnFrame
- self.style = style
- self.vipFreeNumType = vipFreeNumType
- self.clickBlock = clickBlock
-
- contentView.removeAllSubViews()
-
- switch style {
- case .generate:
- title = "Generate".localized
- setUpGenerate()
- launchVipLogic()
- }
-
- }
-
-
- func setLoadingText(text:String?){
- if loading {
- button.setTitle(text, for: .normal)
- }else{
- resetBtnText()
- }
- }
-
- func resetBtnText(){
- button.setTitle(title, for: .normal)
- }
- }
- extension TSAppBtnView{
-
- func launchVipLogic(){
- //监听 Vip 变化
- NotificationCenter.default.addObserver(forName: .kPurchaseDidChanged, object: nil, queue: OperationQueue.main) { [weak self] notification in
- guard let self = self else { return }
- updateVipView()
- }
-
- NotificationCenter.default.addObserver(forName: .kVipFreeNumChanged, object: nil, queue: OperationQueue.main) { [weak self] notification in
- guard let self = self else { return }
- if let userInfo = notification.userInfo as? [String: VipFreeNumType], let myEnum = userInfo["VipFreeNumType"] {
- if myEnum == self.vipFreeNumType {
- self.updateVipView()
- }
- }
- }
-
- updateVipView()
- }
- func updateVipView() {
- switch style {
- case .generate:
- setVip(vip: isIconVipBlock?() ?? false)
- }
- }
-
- func setBtnEnabled(isEnabled:Bool) {
- button.isEnabled = isEnabled
- // button.alpha = isEnabled ? 1.0 : 0.6
- }
-
- var isEnabled:Bool{
- return button.isEnabled
- }
-
- func setVip(vip:Bool) {
-
- if loading { //loading,正在显示转圈动画
- return
- }
-
- if vip {
- button.setImage(UIImage(named: "btnImage_vip"), for: .normal)
- }else{
- button.setImage(nil, for: .normal)
- }
- }
-
- }
- //创造按钮
- extension TSAppBtnView{
- func setUpGenerate() {
- button = kCreateNormalSubmitBtn(
- title: title,
- frame: CGRectMake(0, 0, k_ScreenWidth - 32, 48),
- action: { [weak self] in
- guard let self = self else { return }
- if let vc = WindowHelper.getCurrentViewController() {
- if kJudgeVip(externalBool: isClickVipBlock?() ?? false, vc: vc) { return } //判断 vip
- }
- clickBlock?()
- })
- contentView.addSubview(button)
- button.snp.makeConstraints { make in
- make.center.equalToSuperview()
- make.width.equalTo(button.width)
- make.height.equalTo(button.height)
- }
-
-
- viewH = 48
- }
- }
- //创造按钮
- extension TSAppBtnView{
-
- private func loadingAnimation(loading:Bool) {
- if loading {
- button.setImage(UIImage(named: "generated_loading"), for: .normal)
- self.button.imageView?.startRotating()
- }else {
- button.imageView?.stopRotating()
- updateVipView()
- }
- }
-
- }
- //常用提交按钮
- func kCreateNormalSubmitBtn(title:String,frame:CGRect,action: (() -> Void)? = nil) -> UIButton {
- let btn = TSNormalSubmitBtn()
- btn.frame = frame
- btn.setUpButton(title:title,font: UIFont.font(size: 16,weight: .medium),titleColor:.black,corner: frame.height/2,action: action)
- btn.setTitleImageSpace(spacing: 8)
- var buttonBgImage = UIImage(named: "submit_btn_bg")!
- buttonBgImage = buttonBgImage.resizableImage(withCapInsets: UIEdgeInsets(top:24, left: 24, bottom: 24, right: 24), resizingMode: .stretch)
- btn.setBackgroundImage(buttonBgImage, for: .normal)
-
- var buttonDisBgImage = UIImage(named: "submit_btn_dis_bg")!
- buttonDisBgImage = buttonDisBgImage.resizableImage(withCapInsets: UIEdgeInsets(top:24, left: 24, bottom: 24, right: 24), resizingMode: .stretch)
- btn.setBackgroundImage(buttonDisBgImage, for: .disabled)
-
- return btn
- }
|