321 lines
11 KiB
Swift
321 lines
11 KiB
Swift
//
|
|
// SPMemberRechargeCell.swift
|
|
// MoviaBox
|
|
//
|
|
// Created by 佳尔 on 2025/4/28.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class SPMemberRechargeCell: SPCollectionViewCell {
|
|
|
|
|
|
var model: SPPayTemplateItem? {
|
|
didSet {
|
|
desLabel.text = model?.sp_description
|
|
// typeLabel.text = model?.vip_type_key?.getText()
|
|
typeLabel.text = model?.vip_type_key?.getTextV2()
|
|
durationLabel.text = "/\(model?.vip_type_key?.getText() ?? "")"
|
|
|
|
moneyLabel.text = "\(model?.currency ?? "")\(model?.price ?? "")"
|
|
|
|
if let sendCoins = model?.send_coins, sendCoins > 0 {
|
|
markBgView.isHidden = false
|
|
tipLabel.isHidden = false
|
|
sendCoinLabel.text = String(format: "movia_extra_#".localized, "\(sendCoins)")
|
|
|
|
tipLabel.text = "·" + "movia_coins_extra_days".localizedReplace(text: "\(model?.send_coin_ttl ?? 0)")
|
|
|
|
} else {
|
|
markBgView.isHidden = true
|
|
tipLabel.isHidden = true
|
|
}
|
|
|
|
switch model?.vip_type_key {
|
|
case .year:
|
|
bgView.image = UIImage(named: "vip_bg_image_01")
|
|
vipImageView.image = UIImage(named: "vip_image_01")
|
|
|
|
iconImageView.image = UIImage(named: "vip_icon_10")
|
|
typeIconImageView.image = UIImage(named: "vip_icon_05")
|
|
|
|
desLabel.textColor = .color6B3308()
|
|
typeLabel.textColor = .colorFED095()
|
|
moneyLabel.textColor = .colorFFE49E()
|
|
tipLabel.textColor = .colorFFFFFF(alpha: 0.8)
|
|
|
|
case .quarter:
|
|
bgView.image = UIImage(named: "vip_bg_image_02")
|
|
vipImageView.image = UIImage(named: "vip_image_02")
|
|
|
|
iconImageView.image = UIImage(named: "vip_icon_03")
|
|
typeIconImageView.image = UIImage(named: "vip_icon_06")
|
|
|
|
desLabel.textColor = .color6B3308()
|
|
typeLabel.textColor = .color9F5300()
|
|
moneyLabel.textColor = typeLabel.textColor
|
|
tipLabel.textColor = typeLabel.textColor
|
|
|
|
case .month:
|
|
bgView.image = UIImage(named: "vip_bg_image_03")
|
|
vipImageView.image = UIImage(named: "vip_image_03")
|
|
|
|
iconImageView.image = UIImage(named: "vip_icon_04")
|
|
typeIconImageView.image = UIImage(named: "vip_icon_07")
|
|
|
|
desLabel.textColor = .colorFFFFFF()
|
|
typeLabel.textColor = .color0D4E64()
|
|
moneyLabel.textColor = typeLabel.textColor
|
|
tipLabel.textColor = typeLabel.textColor
|
|
|
|
case .week:
|
|
bgView.image = UIImage(named: "vip_bg_image_04")
|
|
vipImageView.image = UIImage(named: "vip_image_04")
|
|
|
|
iconImageView.image = UIImage(named: "vip_icon_04")
|
|
typeIconImageView.image = UIImage(named: "vip_icon_08")
|
|
|
|
desLabel.textColor = .colorFFFFFF()
|
|
typeLabel.textColor = .color005786()
|
|
moneyLabel.textColor = typeLabel.textColor
|
|
tipLabel.textColor = .color020926()
|
|
|
|
default:
|
|
break
|
|
}
|
|
typeVipLabel.textColor = typeLabel.textColor
|
|
durationLabel.textColor = moneyLabel.textColor
|
|
|
|
updateLayout()
|
|
|
|
}
|
|
}
|
|
|
|
//MARK: UI属性
|
|
private lazy var bgView: UIImageView = {
|
|
let imageView = UIImageView()
|
|
return imageView
|
|
}()
|
|
|
|
private lazy var vipImageView: UIImageView = {
|
|
let imageView = UIImageView()
|
|
return imageView
|
|
}()
|
|
|
|
private lazy var iconImageView: UIImageView = {
|
|
let imageView = UIImageView()
|
|
return imageView
|
|
}()
|
|
|
|
private lazy var desLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.font = .fontRegular(ofSize: 12)
|
|
return label
|
|
}()
|
|
|
|
private lazy var typeLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.font = .fontMedium(ofSize: 16)
|
|
return label
|
|
}()
|
|
|
|
private lazy var typeVipLabel: UILabel = {
|
|
let string = NSMutableAttributedString(string: "VIP")
|
|
string.font = .fontBold(ofSize: 13).withBoldItalic()
|
|
|
|
let label = UILabel()
|
|
label.attributedText = string
|
|
return label
|
|
}()
|
|
|
|
private lazy var typeIconImageView: UIImageView = {
|
|
let imageView = UIImageView()
|
|
imageView.isHidden = true
|
|
return imageView
|
|
}()
|
|
|
|
private lazy var moneyLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.font = .fontBold(ofSize: 32)
|
|
return label
|
|
}()
|
|
|
|
private lazy var durationLabel: UILabel = {
|
|
let label = UILabel()
|
|
return label
|
|
}()
|
|
|
|
private lazy var tipLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.font = .fontRegular(ofSize: 10)
|
|
label.text = "movia_buy_menber_tip".localized
|
|
return label
|
|
}()
|
|
|
|
private lazy var markBgView: SPGradientView = {
|
|
let view = SPGradientView()
|
|
view.colors = [UIColor.colorFF1A35().cgColor, UIColor.colorFF569C().cgColor, UIColor.colorFF8E33().cgColor]
|
|
view.locations = [0, 0.5, 1]
|
|
view.startPoint = .init(x: 0, y: 0.5)
|
|
view.endPoint = .init(x: 1, y: 0.5)
|
|
view.addRadius(topLeft: 0, topRight: 8, bottomLeft: 11, bottomRight: 0)
|
|
return view
|
|
}()
|
|
|
|
private lazy var sendCoinLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.font = .fontBold(ofSize: 11)
|
|
label.textColor = .colorFFFFFF()
|
|
return label
|
|
}()
|
|
|
|
private lazy var coinImageView: UIImageView = {
|
|
let imageView = UIImageView(image: UIImage(named: "coin_icon_05"))
|
|
return imageView
|
|
}()
|
|
|
|
override init(frame: CGRect) {
|
|
super.init(frame: frame)
|
|
|
|
_setupUI()
|
|
}
|
|
|
|
@MainActor required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
private func updateLayout() {
|
|
if model?.vip_type_key == .year {
|
|
desLabel.font = .fontRegular(ofSize: 12)
|
|
typeLabel.font = .fontMedium(ofSize: 16)
|
|
durationLabel.font = .fontRegular(ofSize: 14)
|
|
|
|
vipImageView.snp.updateConstraints { make in
|
|
make.right.equalToSuperview().offset(0)
|
|
}
|
|
|
|
typeLabel.snp.updateConstraints { make in
|
|
make.top.equalToSuperview().offset(12)
|
|
}
|
|
|
|
moneyLabel.snp.updateConstraints { make in
|
|
make.top.equalToSuperview().offset(39)
|
|
}
|
|
|
|
tipLabel.snp.updateConstraints { make in
|
|
make.top.equalTo(moneyLabel.snp.bottom).offset(6)
|
|
}
|
|
|
|
} else {
|
|
desLabel.font = .fontRegular(ofSize: 10)
|
|
typeLabel.font = .fontMedium(ofSize: 12)
|
|
durationLabel.font = .fontRegular(ofSize: 12)
|
|
|
|
vipImageView.snp.updateConstraints { make in
|
|
make.right.equalToSuperview().offset(-11)
|
|
}
|
|
|
|
typeLabel.snp.updateConstraints { make in
|
|
make.top.equalToSuperview().offset(8)
|
|
}
|
|
|
|
moneyLabel.snp.updateConstraints { make in
|
|
make.top.equalToSuperview().offset(26)
|
|
}
|
|
|
|
tipLabel.snp.updateConstraints { make in
|
|
make.top.equalTo(moneyLabel.snp.bottom).offset(0)
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
extension SPMemberRechargeCell {
|
|
|
|
private func _setupUI() {
|
|
contentView.addSubview(bgView)
|
|
bgView.addSubview(iconImageView)
|
|
bgView.addSubview(desLabel)
|
|
bgView.addSubview(vipImageView)
|
|
bgView.addSubview(typeLabel)
|
|
bgView.addSubview(typeVipLabel)
|
|
bgView.addSubview(typeIconImageView)
|
|
bgView.addSubview(moneyLabel)
|
|
bgView.addSubview(durationLabel)
|
|
bgView.addSubview(tipLabel)
|
|
bgView.addSubview(markBgView)
|
|
markBgView.addSubview(sendCoinLabel)
|
|
markBgView.addSubview(coinImageView)
|
|
|
|
|
|
bgView.snp.makeConstraints { make in
|
|
make.edges.equalToSuperview()
|
|
}
|
|
|
|
vipImageView.snp.makeConstraints { make in
|
|
make.top.equalToSuperview().offset(15)
|
|
make.right.equalToSuperview().offset(-11)
|
|
}
|
|
|
|
iconImageView.snp.makeConstraints { make in
|
|
make.left.equalToSuperview().offset(16)
|
|
make.bottom.equalToSuperview().offset(-7)
|
|
}
|
|
|
|
desLabel.snp.makeConstraints { make in
|
|
make.centerY.equalTo(iconImageView)
|
|
make.left.equalTo(iconImageView.snp.right).offset(4)
|
|
}
|
|
|
|
|
|
typeLabel.snp.makeConstraints { make in
|
|
make.left.equalToSuperview().offset(16)
|
|
make.top.equalToSuperview().offset(8)
|
|
}
|
|
|
|
typeVipLabel.snp.makeConstraints { make in
|
|
make.centerY.equalTo(typeLabel)
|
|
make.left.equalTo(typeLabel.snp.right).offset(2)
|
|
}
|
|
|
|
typeIconImageView.snp.makeConstraints { make in
|
|
make.centerY.equalTo(typeLabel)
|
|
make.left.equalTo(typeLabel.snp.right).offset(3)
|
|
}
|
|
|
|
moneyLabel.snp.makeConstraints { make in
|
|
make.left.equalTo(typeLabel)
|
|
make.top.equalToSuperview().offset(28)
|
|
}
|
|
|
|
durationLabel.snp.makeConstraints { make in
|
|
make.left.equalTo(moneyLabel.snp.right)
|
|
make.centerY.equalTo(moneyLabel)
|
|
}
|
|
|
|
tipLabel.snp.makeConstraints { make in
|
|
make.left.equalTo(typeLabel)
|
|
make.top.equalTo(moneyLabel.snp.bottom).offset(4)
|
|
}
|
|
|
|
markBgView.snp.makeConstraints { make in
|
|
make.top.equalToSuperview().offset(1)
|
|
make.right.equalToSuperview().offset(-1)
|
|
make.height.equalTo(18)
|
|
}
|
|
|
|
sendCoinLabel.snp.makeConstraints { make in
|
|
make.centerY.equalToSuperview()
|
|
make.left.equalToSuperview().offset(5)
|
|
}
|
|
|
|
coinImageView.snp.makeConstraints { make in
|
|
make.centerY.equalToSuperview()
|
|
make.left.equalTo(sendCoinLabel.snp.right).offset(2)
|
|
make.right.equalToSuperview().offset(-5)
|
|
}
|
|
}
|
|
|
|
}
|