// // CreateGroupVipPopView.swift // QuickLocation // // Created by 八条 on 2026/6/3. // import UIKit import RxSwift import RxCocoa class CreateGroupVipPopView: UIView { private static let shared = CreateGroupVipPopView(frame: CGRect(origin: .zero, size: kScreenSize)) var disposeBag = DisposeBag() static func show() { guard let superView = kKeyWindow else { return } if CreateGroupVipPopView.shared.superview != nil { CreateGroupVipPopView.shared.removeFromSuperview() CreateGroupVipPopView.shared.bgView.frame = .zero } CreateGroupVipPopView.shared.bgView.alpha = 1 CreateGroupVipPopView.shared.bgView.frame = CGRect(x: 0, y: 0, width: kScreenWidth, height: kScreenHeight) superView.addSubview(CreateGroupVipPopView.shared) superView.bringSubviewToFront(CreateGroupVipPopView.shared) UIView.animate(withDuration: 0.25) { CreateGroupVipPopView.shared.bgView.alpha = 1 } } /// 关闭 static func dismiss() { guard CreateGroupVipPopView.shared.superview != nil else { return } UIView.animate(withDuration: 0.25, delay: 0, options: [.curveEaseIn]) { CreateGroupVipPopView.shared.bgView.alpha = 0 } completion: { _ in CreateGroupVipPopView.shared.removeFromSuperview() } } private func setupRx() { upgradedBtn.rx.tap.subscribe(onNext: { _ in CreateGroupVipPopView.dismiss() AppRouter.push(Route.vipRecharge) }).disposed(by: disposeBag) closeBtn.rx.tap.subscribe(onNext: { _ in CreateGroupVipPopView.dismiss() }).disposed(by: disposeBag) } private lazy var bgView: UIView = { let view = UIView() view.backgroundColor = .black.withAlphaComponent(0.5) return view }() lazy var vipImgView: UIImageView = { let view = UIImageView() view.image = UIImage(named: "Group/vip_pop") view.contentMode = .scaleAspectFill return view }() lazy var upgradedBtn: UIButton = { let btn = UIButton(type: .custom) btn.backgroundColor = .clear btn.setBackgroundImage(UIImage(named: "Group/upgrade_bg"), for: .normal) return btn }() lazy var closeBtn: UIButton = { let btn = UIButton(type: .custom) btn.backgroundColor = .clear btn.setBackgroundImage(UIImage(named: "Group/close"), for: .normal) btn.extendEdgeInsets = UIEdgeInsets(top: 10, left: 100, bottom: 100, right: 100) return btn }() // MARK: - Init override init(frame: CGRect) { super.init(frame: frame) backgroundColor = .clear addSubview(bgView) bgView.addSubview(vipImgView) bgView.addSubview(upgradedBtn) bgView.addSubview(closeBtn) vipImgView.layoutChain .centerY() .edgesHorzontal(25) .heightToWidth(814/648) upgradedBtn.layoutChain .topToBottomOfView(vipImgView, offset: -20) .centerX() .width(240) .height(60) closeBtn.layoutChain .topToBottomOfView(upgradedBtn, offset: 15) .centerX() .width(22) .height(22) setupRx() } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } }