268 lines
9.3 KiB
Swift
268 lines
9.3 KiB
Swift
//
|
|
// VPVipBuyCell.swift
|
|
// Veloria
|
|
//
|
|
// Created by 湖南秦九 on 2025/5/29.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class VPVipBuyCell: ZKCycleScrollViewCell {
|
|
|
|
|
|
var item: VPPayTemplateItem? {
|
|
didSet {
|
|
if let key = item?.vip_type_key?.rawValue {
|
|
bgImageView.image = UIImage(named: "vip_buy_bg_\(key)")
|
|
bgIconImageView.image = UIImage(named: "vip_buy_bg_icon_\(key)")
|
|
}
|
|
// vipNameLabel.text = item?.vip_type_key?.getText()
|
|
vipNameLabel.text = item?.title
|
|
unitLabel.text = item?.currency
|
|
moneyLabel.text = item?.price
|
|
durationLabel.text = "/\(item?.vip_type_key?.getText() ?? "")"
|
|
desLabel.text = item?.sp_description
|
|
|
|
|
|
var tipText = "veloria_store_auto_renew".localized
|
|
if let coin = item?.send_coins, coin > 0 {
|
|
sendCoinBgView.isHidden = false
|
|
sendCoinView.isHidden = false
|
|
let text = "veloria_extra".localized + " \(coin)"
|
|
sendCoinView.setTitle("+" + text, for: .normal)
|
|
|
|
tipText += "\n"
|
|
tipText += "veloria_store_donate_coins_ios".localizedReplace(text: "veloria_days_count_text".localizedReplace(text: "\(item?.send_coin_ttl ?? 0)"))
|
|
} else {
|
|
sendCoinBgView.isHidden = true
|
|
sendCoinView.isHidden = true
|
|
}
|
|
tipLabel.text = tipText
|
|
|
|
var colors: [CGColor] = []
|
|
|
|
switch item?.vip_type_key {
|
|
case .week:
|
|
colors = [UIColor.color64A3A7().cgColor, UIColor.color416767().cgColor]
|
|
sendCoinBgView.colors = [UIColor.colorBDFFFB().cgColor, UIColor.color7AD9D4().cgColor]
|
|
sendCoinView.setTitleColor(.color16706A(), for: .normal)
|
|
desLabel.textColor = .color416767()
|
|
desBgView.colors = [UIColor.colorB2E7EA().cgColor, UIColor.colorB2E7EA(alpha: 0).cgColor]
|
|
tipLabel.textColor = .color8AAEA6()
|
|
case .month:
|
|
colors = [UIColor.color647DA7().cgColor, UIColor.color414867().cgColor]
|
|
sendCoinBgView.colors = [UIColor.colorADCFFF().cgColor, UIColor.color7CA1D7().cgColor]
|
|
sendCoinView.setTitleColor(.color214170(), for: .normal)
|
|
desLabel.textColor = .color303962()
|
|
desBgView.colors = [UIColor.colorD6E5F9().cgColor, UIColor.colorD6E5F9(alpha: 0).cgColor]
|
|
tipLabel.textColor = .color8790B7()
|
|
case .quarter:
|
|
colors = [UIColor.color7869FF().cgColor, UIColor.color9F45FF().cgColor]
|
|
sendCoinBgView.colors = [UIColor.colorDBC7FF().cgColor, UIColor.color975DFF().cgColor]
|
|
sendCoinView.setTitleColor(.color510087(), for: .normal)
|
|
desLabel.textColor = .color5F1EB9()
|
|
desBgView.colors = [UIColor.colorCABCFF().cgColor, UIColor.colorCABCFF(alpha: 0).cgColor]
|
|
tipLabel.textColor = .colorA395D9()
|
|
case .year:
|
|
colors = [UIColor.color9C7565().cgColor, UIColor.color573D31().cgColor]
|
|
sendCoinBgView.colors = [UIColor.colorFBF2C7().cgColor, UIColor.colorA87A46().cgColor]
|
|
sendCoinView.setTitleColor(.color683D00(), for: .normal)
|
|
desLabel.textColor = .color573D31()
|
|
desBgView.colors = [UIColor.colorFFE6CE().cgColor, UIColor.colorFFE6CE(alpha: 0).cgColor]
|
|
tipLabel.textColor = .colorAC978D()
|
|
default:
|
|
break
|
|
}
|
|
|
|
|
|
vipNameLabel.gradientLayer.colors = colors
|
|
unitLabel.gradientLayer.colors = colors
|
|
moneyLabel.gradientLayer.colors = colors
|
|
durationLabel.gradientLayer.colors = colors
|
|
}
|
|
}
|
|
|
|
var vp_isSelected = false {
|
|
didSet {
|
|
selectedImageView.isHidden = !vp_isSelected
|
|
}
|
|
}
|
|
|
|
private lazy var bgImageView: UIImageView = {
|
|
let imageView = UIImageView()
|
|
return imageView
|
|
}()
|
|
|
|
private lazy var bgIconImageView: UIImageView = {
|
|
let imageView = UIImageView()
|
|
return imageView
|
|
}()
|
|
|
|
private lazy var vipNameLabel: VPGradientLabel = {
|
|
let label = VPGradientLabel()
|
|
label.font = .fontMedium(ofSize: 12)
|
|
return label
|
|
}()
|
|
|
|
private lazy var unitLabel: VPGradientLabel = {
|
|
let label = VPGradientLabel()
|
|
label.font = .fontRegular(ofSize: 18)
|
|
return label
|
|
}()
|
|
|
|
private lazy var moneyLabel: VPGradientLabel = {
|
|
let label = VPGradientLabel()
|
|
label.font = .fontAaHouDiHei(ofSize: 32)
|
|
return label
|
|
}()
|
|
|
|
private lazy var durationLabel: VPGradientLabel = {
|
|
let label = VPGradientLabel()
|
|
label.font = .fontMedium(ofSize: 16)
|
|
return label
|
|
}()
|
|
|
|
private lazy var desBgView: VPGradientView = {
|
|
let view = VPGradientView()
|
|
view.locations = [0, 1]
|
|
view.startPoint = .init(x: 0, y: 0.5)
|
|
view.endPoint = .init(x: 1, y: 0.5)
|
|
view.layer.cornerRadius = 8
|
|
view.layer.masksToBounds = true
|
|
return view
|
|
}()
|
|
|
|
private lazy var desLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.font = .fontRegular(ofSize: 10)
|
|
return label
|
|
}()
|
|
|
|
private lazy var sendCoinBgView: VPGradientView = {
|
|
let view = VPGradientView()
|
|
view.locations = [0, 1]
|
|
view.startPoint = .init(x: 0, y: 0.5)
|
|
view.endPoint = .init(x: 1, y: 0.5)
|
|
view.addRadius(topLeft: 10, topRight: 0, bottomLeft: 0, bottomRight: 10)
|
|
return view
|
|
}()
|
|
|
|
private lazy var sendCoinView: UIButton = {
|
|
let view = JXButton(type: .custom)
|
|
view.isUserInteractionEnabled = false
|
|
view.titleDirection = .left
|
|
view.space = 4
|
|
view.jx_font = .fontMedium(ofSize: 12)
|
|
view.setImage(UIImage(named: "coin_icon_02"), for: .normal)
|
|
return view
|
|
}()
|
|
|
|
private lazy var tipLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.numberOfLines = 0
|
|
label.font = .fontRegular(ofSize: 10)
|
|
return label
|
|
}()
|
|
|
|
private lazy var selectedImageView: UIImageView = {
|
|
let imageView = UIImageView(image: UIImage(named: "selected_icon_01"))
|
|
return imageView
|
|
}()
|
|
|
|
override init(frame: CGRect) {
|
|
super.init(frame: frame)
|
|
|
|
vp_setupUI()
|
|
}
|
|
|
|
@MainActor required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
}
|
|
|
|
extension VPVipBuyCell {
|
|
|
|
private func vp_setupUI() {
|
|
contentView.addSubview(bgImageView)
|
|
contentView.addSubview(bgIconImageView)
|
|
bgImageView.addSubview(vipNameLabel)
|
|
bgImageView.addSubview(unitLabel)
|
|
bgImageView.addSubview(moneyLabel)
|
|
bgImageView.addSubview(durationLabel)
|
|
bgImageView.addSubview(sendCoinBgView)
|
|
sendCoinBgView.addSubview(sendCoinView)
|
|
bgImageView.addSubview(desBgView)
|
|
desBgView.addSubview(desLabel)
|
|
bgImageView.addSubview(tipLabel)
|
|
bgImageView.addSubview(selectedImageView)
|
|
|
|
bgImageView.snp.makeConstraints { make in
|
|
make.left.right.bottom.equalToSuperview()
|
|
make.top.equalToSuperview().offset(10)
|
|
}
|
|
|
|
bgIconImageView.snp.makeConstraints { make in
|
|
make.top.equalToSuperview()
|
|
make.right.equalToSuperview()
|
|
}
|
|
|
|
vipNameLabel.snp.makeConstraints { make in
|
|
make.left.equalToSuperview().offset(20)
|
|
make.top.equalToSuperview().offset(10)
|
|
make.height.equalTo(22)
|
|
}
|
|
|
|
unitLabel.snp.makeConstraints { make in
|
|
make.left.equalTo(vipNameLabel)
|
|
make.top.equalTo(vipNameLabel.snp.bottom).offset(10)
|
|
make.height.equalTo(25)
|
|
}
|
|
|
|
moneyLabel.snp.makeConstraints { make in
|
|
make.left.equalTo(unitLabel.snp.right)
|
|
make.bottom.equalTo(unitLabel).offset(3)
|
|
}
|
|
|
|
durationLabel.snp.makeConstraints { make in
|
|
make.bottom.equalTo(unitLabel).offset(-2)
|
|
make.left.equalTo(moneyLabel.snp.right)
|
|
make.height.equalTo(22)
|
|
}
|
|
|
|
sendCoinBgView.snp.makeConstraints { make in
|
|
make.right.bottom.equalToSuperview()
|
|
make.height.equalTo(24)
|
|
}
|
|
|
|
sendCoinView.snp.makeConstraints { make in
|
|
make.centerY.equalToSuperview()
|
|
make.centerX.equalToSuperview()
|
|
make.left.equalToSuperview().offset(10)
|
|
}
|
|
|
|
desBgView.snp.makeConstraints { make in
|
|
make.left.equalToSuperview().offset(20)
|
|
make.bottom.equalToSuperview().offset(-35)
|
|
make.height.equalTo(16)
|
|
}
|
|
|
|
desLabel.snp.makeConstraints { make in
|
|
make.center.equalToSuperview()
|
|
make.left.equalToSuperview().offset(7)
|
|
}
|
|
|
|
tipLabel.snp.makeConstraints { make in
|
|
make.left.equalTo(desBgView)
|
|
make.top.equalTo(desBgView.snp.bottom).offset(5)
|
|
}
|
|
|
|
selectedImageView.snp.makeConstraints { make in
|
|
make.left.equalToSuperview()
|
|
make.top.equalToSuperview()
|
|
}
|
|
|
|
}
|
|
|
|
}
|