143 lines
4.0 KiB
Swift
143 lines
4.0 KiB
Swift
//
|
|
// VPSearchRecommendedCell.swift
|
|
// Veloria
|
|
//
|
|
// Created by 湖南秦九 on 2025/5/24.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class VPSearchRecommendedCell: VPCollectionViewCell {
|
|
|
|
var model: VPShortModel? {
|
|
didSet {
|
|
coverImageView.vp_setImage(url: model?.image_url)
|
|
titleLabel.text = model?.name
|
|
desLabel.text = model?.vp_description
|
|
|
|
if let category = model?.category?.first, !category.isEmpty {
|
|
tagView.isHidden = false
|
|
tagView.setTitle(category, for: .normal)
|
|
} else {
|
|
tagView.isHidden = true
|
|
}
|
|
}
|
|
}
|
|
|
|
var row: Int = 0 {
|
|
didSet {
|
|
if row < 3 {
|
|
numBgView.image = UIImage(named: "num_icon_01")
|
|
} else {
|
|
numBgView.image = UIImage(named: "num_icon_02")
|
|
}
|
|
numLabel.text = "\(row + 1)"
|
|
}
|
|
}
|
|
|
|
private lazy var coverImageView: VPImageView = {
|
|
let imageView = VPImageView()
|
|
imageView.layer.cornerRadius = 6
|
|
imageView.layer.masksToBounds = true
|
|
return imageView
|
|
}()
|
|
|
|
private lazy var titleLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.font = .fontMedium(ofSize: 12)
|
|
label.textColor = .colorFFFFFF()
|
|
label.numberOfLines = 2
|
|
return label
|
|
}()
|
|
|
|
private lazy var tagView: UIButton = {
|
|
let view = JXButton(type: .custom)
|
|
view.isUserInteractionEnabled = false
|
|
view.jx_font = .fontRegular(ofSize: 10)
|
|
view.setTitleColor(.colorAFAFAF(), for: .normal)
|
|
view.backgroundColor = .colorFFFFFF(alpha: 0.1)
|
|
view.layer.cornerRadius = 3
|
|
view.layer.masksToBounds = true
|
|
view.leftAndRightMargin = 5
|
|
return view
|
|
}()
|
|
|
|
private lazy var desLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.numberOfLines = 2
|
|
label.font = .fontRegular(ofSize: 10)
|
|
label.textColor = .colorFFFFFF(alpha: 0.6)
|
|
return label
|
|
}()
|
|
|
|
private lazy var numBgView: UIImageView = {
|
|
let view = UIImageView()
|
|
return view
|
|
}()
|
|
|
|
private lazy var numLabel: UILabel = {
|
|
let label = UILabel()
|
|
label.font = .numberFont(ofSize: 18)
|
|
label.textColor = .colorFFFFFB()
|
|
return label
|
|
}()
|
|
|
|
override init(frame: CGRect) {
|
|
super.init(frame: frame)
|
|
|
|
vp_setupUI()
|
|
}
|
|
|
|
@MainActor required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
}
|
|
|
|
|
|
extension VPSearchRecommendedCell {
|
|
|
|
private func vp_setupUI() {
|
|
contentView.addSubview(coverImageView)
|
|
coverImageView.addSubview(numBgView)
|
|
coverImageView.addSubview(numLabel)
|
|
contentView.addSubview(titleLabel)
|
|
contentView.addSubview(tagView)
|
|
contentView.addSubview(desLabel)
|
|
|
|
coverImageView.snp.makeConstraints { make in
|
|
make.left.equalToSuperview()
|
|
make.top.bottom.equalToSuperview()
|
|
make.width.equalTo(68)
|
|
}
|
|
|
|
numBgView.snp.makeConstraints { make in
|
|
make.left.equalToSuperview()
|
|
make.top.equalToSuperview()
|
|
}
|
|
|
|
numLabel.snp.makeConstraints { make in
|
|
make.centerX.equalTo(numBgView).offset(2)
|
|
make.centerY.equalTo(numBgView).offset(2)
|
|
}
|
|
|
|
titleLabel.snp.makeConstraints { make in
|
|
make.left.equalTo(coverImageView.snp.right).offset(10)
|
|
make.right.lessThanOrEqualToSuperview()
|
|
make.centerY.equalTo(coverImageView.snp.top).offset(15)
|
|
}
|
|
|
|
tagView.snp.makeConstraints { make in
|
|
make.left.equalTo(titleLabel)
|
|
make.top.equalToSuperview().offset(39)
|
|
make.height.equalTo(16)
|
|
}
|
|
|
|
desLabel.snp.makeConstraints { make in
|
|
make.left.equalTo(titleLabel)
|
|
make.right.lessThanOrEqualToSuperview()
|
|
make.bottom.equalToSuperview().offset(-3)
|
|
}
|
|
}
|
|
|
|
}
|