Visual_Novel_iOS/crush/Crush/Src/Modules/Wallet/View/CoinsRechargeHeader.swift

143 lines
4.1 KiB
Swift

//
// CoinsRechargeHeader.swift
// Crush
//
// Created by Leon on 2025/9/15.
//
import Combine
class CoinsRechargeHeader: UIView {
var block: UIView!
var bottomBg: UIImageView!
var titleLabel: UILabel!
var coinAndLabel: CLIconLabel!
var billListEntryLabel: CLLabel!
var billListEntryButton: UIButton!
private var cancellables = Set<AnyCancellable>()
override init(frame: CGRect) {
super.init(frame: frame)
setupViews()
setupEvent()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setupViews() {
block = {
let v = UIView()
v.backgroundColor = .clear
v.cornerRadius = 16
v.clipsToBounds = true
v.layer.borderWidth = 1
v.layer.borderColor = UIColor.c.con.cgColor
addSubview(v)
v.snp.makeConstraints { make in
make.top.equalToSuperview().offset(16)
make.leading.equalToSuperview().offset(24)
make.trailing.equalToSuperview().offset(-24)
make.height.equalTo(168)
}
return v
}()
bottomBg = {
let v = UIImageView()
v.image = UIImage(named: "walletBg")
let size = v.image?.size ?? .zero
v.contentMode = .scaleAspectFill
v.clipsToBounds = true
block.addSubview(v)
v.snp.makeConstraints { make in
make.bottom.equalToSuperview()
make.leading.trailing.equalToSuperview()
make.height.equalTo(v.snp.width).multipliedBy(size.height / size.width)
}
return v
}()
titleLabel = {
let v = UILabel()
v.font = .t.tts
v.textColor = .c.ctpn
block.addSubview(v)
v.snp.makeConstraints { make in
make.top.equalToSuperview().offset(24)
make.centerX.equalToSuperview()
}
return v
}()
coinAndLabel = {
let v = CLIconLabel()
v.spacing = 8
v.iconSize = CGSize(width: 24, height: 24)
v.iconImageView.image = UIImage.icon32Diamond
v.contentLabel.font = .t.tndl
v.contentLabel.textColor = .white
v.contentLabel.text = "0"
block.addSubview(v)
v.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.top.equalTo(titleLabel.snp.bottom).offset(4)
}
return v
}()
billListEntryLabel = {
let v = CLLabel()
v.textColor = .c.cpvn
v.font = .t.tls
block.addSubview(v)
v.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.bottom.equalToSuperview().offset(-24)
}
return v
}()
billListEntryButton = {
let v = UIButton()
block.addSubview(v)
v.snp.makeConstraints { make in
make.centerY.equalTo(billListEntryLabel)
make.leading.trailing.equalTo(billListEntryLabel)
make.height.equalTo(30)
}
return v
}()
let rechargeTitleLabel = {
let v = CLLabel()
v.font = .t.ttm
addSubview(v)
v.snp.makeConstraints { make in
make.leading.equalToSuperview().offset(24)
make.trailing.equalToSuperview().offset(-24)
make.top.equalTo(block.snp.bottom).offset(24)
}
return v
}()
titleLabel.text = "Balance"
billListEntryLabel.text = "Transaction Details>"
rechargeTitleLabel.text = "Recharge"
}
private func setupEvent(){
WalletCore.shared.$balance.sink {[weak self] wallet in
self?.coinAndLabel.contentLabel.text = wallet.displayBalance()
}.store(in: &cancellables)
}
}