199 lines
6.4 KiB
Swift
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)
|
|
}
|
|
}
|
|
|
|
}
|