SynthReel/SynthReel/Class/Home/V/SRHomeBingeWorthyCell.swift
2025-12-10 10:23:22 +08:00

136 lines
4.1 KiB
Swift

//
// SRHomeBingeWorthyCell.swift
// SynthReel
//
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//
import UIKit
import SnapKit
class SRHomeBingeWorthyCell: UICollectionViewCell {
var model: SRShortModel? {
didSet {
coverImageView.sr_setImage(model?.image_url)
titleLabel.text = model?.name
desLabel.text = model?.sr_description
if let text = model?.category?.first, text.count > 0 {
categoryLabel.text = "#\(text)"
} else {
categoryLabel.text = nil
}
}
}
lazy var bgImageView = UIImageView(image: UIImage(named: "home_binge_worthy_cell_image"))
lazy var coverImageView: SRImageView = {
let imageView = SRImageView()
imageView.layer.cornerRadius = 4
imageView.layer.masksToBounds = true
return imageView
}()
lazy var titleLabel: UILabel = {
let label = UILabel()
label.font = .font(ofSize: 14, weight: .medium)
label.textColor = .white
return label
}()
lazy var categoryLabel: SRLabel = {
let label = SRLabel()
label.font = .font(ofSize: 11, weight: .regular)
label.textColors = [UIColor.srGreen.cgColor, UIColor.srBlue.cgColor]
label.textStartPoint = .init(x: 0.5, y: 0)
label.textEndPoint = .init(x: 0.5, y: 1)
return label
}()
lazy var desLabel: UILabel = {
let label = UILabel()
label.font = .font(ofSize: 11, weight: .regular)
label.textColor = .A_6_A_6_A_6
label.numberOfLines = 3
return label
}()
lazy var playImageView = UIImageView(image: UIImage(named: "play_icon_01"))
lazy var playLabel: UILabel = {
let label = SRLabel()
label.font = .font(ofSize: 11, weight: .regular)
label.textColors = [UIColor.srGreen.cgColor, UIColor.srBlue.cgColor]
label.textStartPoint = .init(x: 0.5, y: 0)
label.textEndPoint = .init(x: 0.5, y: 1)
label.text = "Play"
return label
}()
override init(frame: CGRect) {
super.init(frame: frame)
sr_setupUI()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
extension SRHomeBingeWorthyCell {
private func sr_setupUI() {
contentView.addSubview(bgImageView)
contentView.addSubview(coverImageView)
contentView.addSubview(titleLabel)
contentView.addSubview(categoryLabel)
contentView.addSubview(desLabel)
contentView.addSubview(playImageView)
playImageView.addSubview(playLabel)
bgImageView.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
coverImageView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(10)
make.top.equalToSuperview().offset(10)
make.width.equalTo(126)
make.height.equalTo(168)
}
titleLabel.snp.makeConstraints { make in
make.left.equalTo(coverImageView.snp.right).offset(11)
make.top.equalToSuperview().offset(27)
make.right.lessThanOrEqualToSuperview().offset(-15)
}
categoryLabel.snp.makeConstraints { make in
make.left.equalTo(titleLabel)
make.top.equalTo(titleLabel.snp.bottom).offset(12)
make.right.lessThanOrEqualToSuperview().offset(-15)
}
desLabel.snp.makeConstraints { make in
make.left.equalTo(titleLabel)
make.top.equalTo(titleLabel.snp.bottom).offset(43)
make.right.lessThanOrEqualToSuperview().offset(-15)
}
playImageView.snp.makeConstraints { make in
make.left.equalTo(coverImageView.snp.right).offset(11)
make.bottom.equalTo(coverImageView).offset(1)
}
playLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(45)
make.top.equalToSuperview().offset(9)
}
}
}