Veloria/Veloria/Class/Me/View/VPMeVipCell.swift
2025-05-28 18:13:24 +08:00

174 lines
5.4 KiB
Swift

//
// VPMeVipCell.swift
// Veloria
//
// Created by on 2025/5/28.
//
import UIKit
class VPMeVipCell: VPTableViewCell {
private lazy var bgView: UIView = {
let view = VPGradientView()
view.colors = [UIColor.color06DEAD(alpha: 0.32).cgColor, UIColor.colorFFFFFF(alpha: 0.05).cgColor]
view.locations = [0, 1]
view.startPoint = .init(x: 0, y: 0.5)
view.endPoint = .init(x: 1, y: 0.5)
let tap = UITapGestureRecognizer(target: self, action: #selector(handleBgView))
view.addGestureRecognizer(tap)
return view
}()
private lazy var bgIconImageView: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "vip_icon_01"))
return imageView
}()
private lazy var vipIconImageView: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "vip_icon_02"))
imageView.setContentHuggingPriority(.required, for: .horizontal)
imageView.setContentCompressionResistancePriority(.required, for: .horizontal)
return imageView
}()
private lazy var titleLabel: UILabel = {
let label = UILabel()
label.font = .fontBold(ofSize: 15)
label.textColor = .colorFFFFFF()
label.text = "Join VIP".localized
return label
}()
private lazy var subtitleLabel: UILabel = {
let label = UILabel()
label.font = .fontRegular(ofSize: 12)
label.textColor = .colorFFFFFF()
label.text = "kVipTipText1".localized
return label
}()
private lazy var itemView1: VPMeVipPrivilegeItemView = {
let view = VPMeVipPrivilegeItemView()
view.icon = UIImage(named: "privilege_icon_01")
view.title = "kVipPrivilegeText1".localized
return view
}()
private lazy var itemView2: VPMeVipPrivilegeItemView = {
let view = VPMeVipPrivilegeItemView()
view.icon = UIImage(named: "privilege_icon_02")
view.title = "kVipPrivilegeText2".localized
return view
}()
private lazy var itemView3: VPMeVipPrivilegeItemView = {
let view = VPMeVipPrivilegeItemView()
view.icon = UIImage(named: "privilege_icon_03")
view.title = "kVipPrivilegeText3".localized
return view
}()
private lazy var lineView1: UIView = {
let view = UIView()
view.backgroundColor = .colorFFFFFF(alpha: 0.27)
return view
}()
private lazy var lineView2: UIView = {
let view = UIView()
view.backgroundColor = .colorFFFFFF(alpha: 0.27)
return view
}()
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
vp_setupUI()
}
@MainActor required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@objc private func handleBgView() {
let vc = VPVipViewController()
self.viewController?.navigationController?.pushViewController(vc, animated: true)
}
}
extension VPMeVipCell {
private func vp_setupUI() {
contentView.addSubview(bgView)
bgView.addSubview(bgIconImageView)
bgView.addSubview(vipIconImageView)
bgView.addSubview(titleLabel)
bgView.addSubview(subtitleLabel)
bgView.addSubview(itemView1)
bgView.addSubview(itemView2)
bgView.addSubview(itemView3)
bgView.addSubview(lineView1)
bgView.addSubview(lineView2)
bgView.snp.makeConstraints { make in
make.left.right.top.bottom.equalToSuperview()
make.height.equalTo(152)
}
bgIconImageView.snp.makeConstraints { make in
make.top.equalToSuperview().offset(5)
make.right.equalToSuperview()
}
vipIconImageView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(19)
make.top.equalToSuperview().offset(14)
}
titleLabel.snp.makeConstraints { make in
make.left.equalTo(vipIconImageView.snp.right).offset(10)
make.top.equalToSuperview().offset(21)
}
subtitleLabel.snp.makeConstraints { make in
make.left.equalTo(titleLabel)
make.top.equalTo(titleLabel.snp.bottom).offset(2)
make.right.lessThanOrEqualToSuperview().offset(-20)
}
itemView1.snp.makeConstraints { make in
make.left.equalToSuperview()
make.top.equalToSuperview().offset(73)
}
itemView2.snp.makeConstraints { make in
make.left.equalTo(itemView1.snp.right).offset(1)
make.top.equalTo(itemView1)
make.width.equalTo(itemView1)
}
itemView3.snp.makeConstraints { make in
make.left.equalTo(itemView2.snp.right).offset(1)
make.top.equalTo(itemView1)
make.right.equalToSuperview()
make.width.equalTo(itemView1)
}
lineView1.snp.makeConstraints { make in
make.top.equalTo(itemView1).offset(16)
make.left.equalTo(itemView1.snp.right)
make.width.equalTo(1)
make.height.equalTo(42)
}
lineView2.snp.makeConstraints { make in
make.top.width.height.equalTo(lineView1)
make.left.equalTo(itemView2.snp.right)
}
}
}