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

111 lines
3.2 KiB
Swift

//
// CoinsRechargeBottomView.swift
// Crush
//
// Created by Leon on 2025/9/16.
//
import ActiveLabel
class CoinsRechargeBottomView: UIView {
var operateButton: StyleButton!
var activeLabel: ActiveLabel!
var checkButton: EPRadioButton!
override init(frame: CGRect) {
super.init(frame: frame)
setupViews()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func setupViews() {
backgroundColor = .c.cbd
activeLabel = {
let v = ActiveLabel()
v.textColor = .text
v.font = .t.tbs
v.numberOfLines = 0
addSubview(v)
v.snp.makeConstraints { make in
make.leading.equalToSuperview().offset(48)
make.trailing.equalToSuperview().offset(-CGFloat.lrs)
make.bottom.equalToSuperview().offset(-UIWindow.safeAreaBottom - 16)
}
return v
}()
checkButton = {
let button = EPRadioButton()
//button.setupStyle(.rectangle)
button.setupRadioStyle(.checkEmpty)
button.addTarget(self, action: #selector(tapCheckButton), for: .touchUpInside)
addSubview(button)
button.snp.makeConstraints { make in
make.leading.equalToSuperview().offset(24)
make.top.equalTo(activeLabel).offset(2)
make.size.equalTo(CGSize(width: 16, height: 16))
}
button.isSelected = true
return button
}()
operateButton = {
let v = StyleButton()
v.primary(size: .large)
addSubview(v)
v.snp.makeConstraints { make in
make.leading.equalToSuperview().offset(CGFloat.lrs)
make.trailing.equalToSuperview().offset(-CGFloat.lrs)
make.top.equalToSuperview().offset(16)
make.bottom.equalTo(activeLabel.snp.top).offset(-16)
}
return v
}()
operateButton.setTitle("Recharge", for: .normal)
setupAgreenment()
}
// MARK: - Public
// MARK: - Helper
func setupAgreenment() {
let userAgreenment = "CrushLevel Top-Up Agreement"
let full = "I have read and agree to the \(userAgreenment)"
let activeType1 = ActiveType.custom(pattern: userAgreenment)
activeLabel.text = full
activeLabel.enabledTypes = [activeType1]
// activeLabel.customColor[activeType1] = .red
activeLabel.handleCustomTap(for: activeType1) { str in
dlog("tap\(str)")
AppRouter.goRechargeH5()
}
activeLabel.customize { label in
label.configureLinkAttribute = { type, attributes, _ in
var attr = attributes
if type == activeType1 {
attr[NSAttributedString.Key.foregroundColor] = UIColor.c.cpvn
attr[NSAttributedString.Key.font] = UIFont.t.tbsm
}
return attr
}
}
}
// MARK: - Action
@objc func tapCheckButton() {
checkButton.isSelected = !checkButton.isSelected
operateButton.isEnabled = checkButton.isSelected
}
}