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

199 lines
6.4 KiB
Swift

//
// SRHomePremiereNowView.swift
// SynthReel
//
// Created by on 2025/11/17.
// Copyright © 2025 SR. All rights reserved.
//
import UIKit
import SnapKit
class SRHomePremiereNowView: SRHomeModuleView {
var dataArr: [SRShortModel]? {
didSet {
let count = dataArr?.count ?? 0
self.oneModel = dataArr?.first
if count >= 2 {
self.twoModel = dataArr?[1]
} else {
self.twoModel = nil
}
if count >= 3 {
self.threeModel = dataArr?[2]
} else {
self.threeModel = nil
}
}
}
var oneModel: SRShortModel? {
didSet {
oneCoverImageView.sr_setImage(oneModel?.image_url)
oneTitleLabel.text = oneModel?.name
}
}
var twoModel: SRShortModel? {
didSet {
if let model = twoModel {
twoCoverImageView.sr_setImage(model.image_url)
twoCoverImageView.isHidden = false
} else {
twoCoverImageView.isHidden = true
}
}
}
var threeModel: SRShortModel? {
didSet {
if let model = threeModel {
threeCoverImageView.sr_setImage(model.image_url)
threeCoverImageView.isHidden = false
} else {
threeCoverImageView.isHidden = true
}
}
}
lazy var bgImageView = UIImageView(image: UIImage(named: "premiere_now_bg_image_01"))
lazy var oneBgImageView = UIImageView(image: UIImage(named: "premiere_now_bg_image_02"))
lazy var oneCoverImageView: SRImageView = {
let imageView = SRImageView()
imageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer { [weak self] _ in
guard let self = self else { return }
self.didSelectedShort?(self.oneModel)
}
imageView.addGestureRecognizer(tap)
return imageView
}()
lazy var oneTitleBgView = UIImageView(image: UIImage(named: "premiere_now_title_bg"))
lazy var oneTitleLabel: UILabel = {
let label = SRLabel()
label.font = .font(ofSize: UIScreen.getRatioWidth(size: 12), weight: .medium)
label.numberOfLines = 2
label.textAlignment = .center
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 twoCoverImageView: SRImageView = {
let imageView = SRImageView()
imageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer { [weak self] _ in
guard let self = self else { return }
self.didSelectedShort?(self.twoModel)
}
imageView.addGestureRecognizer(tap)
return imageView
}()
lazy var threeCoverImageView: SRImageView = {
let imageView = SRImageView()
imageView.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer { [weak self] _ in
guard let self = self else { return }
self.didSelectedShort?(self.threeModel)
}
imageView.addGestureRecognizer(tap)
return imageView
}()
override init(frame: CGRect) {
super.init(frame: frame)
self.titleLabel.text = "Premiere Now".localized
sr_setupUI()
}
@MainActor required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews() {
super.layoutSubviews()
oneCoverImageView.applyHexagonMask(2)
twoCoverImageView.applyHexagonMask(2)
threeCoverImageView.applyHexagonMask(2)
}
}
extension SRHomePremiereNowView {
private func sr_setupUI() {
oneBgImageView.isUserInteractionEnabled = true
addSubview(bgImageView)
addSubview(oneBgImageView)
oneBgImageView.addSubview(oneCoverImageView)
oneCoverImageView.addSubview(oneTitleBgView)
oneTitleBgView.addSubview(oneTitleLabel)
addSubview(twoCoverImageView)
addSubview(threeCoverImageView)
bgImageView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.centerY.equalTo(oneBgImageView)
make.height.equalTo(UIScreen.getRatioWidth(size: 155))
}
oneBgImageView.snp.makeConstraints { make in
make.centerX.equalToSuperview()
make.bottom.equalToSuperview()
make.top.equalTo(button.snp.bottom).offset(8)
make.width.equalTo(UIScreen.getRatioWidth(size: 200))
make.height.equalTo(UIScreen.getRatioWidth(size: 175))
}
oneCoverImageView.snp.makeConstraints { make in
make.center.equalToSuperview()
make.width.equalTo(UIScreen.getRatioWidth(size: 190))
make.height.equalTo(UIScreen.getRatioWidth(size: 166))
}
oneTitleBgView.snp.makeConstraints { make in
make.bottom.equalToSuperview()
make.left.equalToSuperview().offset(UIScreen.getRatioWidth(size: 24.5))
make.right.equalToSuperview().offset(-UIScreen.getRatioWidth(size: 27))
make.height.equalTo(UIScreen.getRatioWidth(size: 41))
}
oneTitleLabel.snp.makeConstraints { make in
make.centerY.equalTo(oneTitleBgView.snp.top).offset(UIScreen.getRatioWidth(size: 23))
make.centerX.equalToSuperview().offset(UIScreen.getRatioWidth(size: 1.5))
make.right.lessThanOrEqualToSuperview().offset(-UIScreen.getRatioWidth(size: 15))
}
twoCoverImageView.snp.makeConstraints { make in
make.centerY.equalTo(oneBgImageView)
make.left.equalToSuperview().offset(UIScreen.getRatioWidth(size: 20))
make.width.equalTo(UIScreen.getRatioWidth(size: 62))
make.height.equalTo(UIScreen.getRatioWidth(size: 54))
}
threeCoverImageView.snp.makeConstraints { make in
make.centerY.equalTo(oneBgImageView)
make.right.equalToSuperview().offset(-UIScreen.getRatioWidth(size: 20))
make.width.height.equalTo(twoCoverImageView)
}
}
}