MoviaBox/Thimra/Class/Explore/View/SPExplorePlayerControlView.swift
2025-04-23 11:33:46 +08:00

140 lines
4.3 KiB
Swift

//
// SPExplorePlayerControlView.swift
// Thimra
//
// Created by on 2025/4/17.
//
import UIKit
class SPExplorePlayerControlView: SPPlayerControlView {
override var shortModel: SPShortModel? {
didSet {
// desLabel.text = shortModel?.sp_description
videoInfoView.shortModel = shortModel
// shortModel?.episode_total
updateEpisodeLabel()
}
}
override var videoInfo: SPVideoInfoModel? {
didSet {
updateEpisodeLabel()
}
}
// private lazy var desLabel: UILabel = {
// let label = UILabel()
// label.font = .fontRegular(ofSize: 12)
// label.textColor = .colorD2D2D2()
// label.numberOfLines = 2
// return label
// }()
private lazy var videoInfoView: SPVideoPlayerInfoView = {
let view = SPVideoPlayerInfoView()
return view
}()
private lazy var episodeIconImageView: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "episode_icon_01"))
return imageView
}()
private lazy var episodeLabel: UILabel = {
let label = UILabel()
label.font = .fontRegular(ofSize: 12)
return label
}()
private lazy var allEpisodeButton: UIButton = {
let button = JXButton(type: .custom)
button.setTitle("Full Episodes".localized, for: .normal)
button.setTitleColor(.colorEC3324(), for: .normal)
button.setImage(UIImage(named: "arrow_right_icon_01"), for: .normal)
button.jx_font = .fontMedium(ofSize: 12)
button.titleDirection = .left
button.space = 4
button.addTarget(self, action: #selector(handleAllEpisodeButton), for: .touchUpInside)
return button
}()
override init(frame: CGRect) {
super.init(frame: frame)
// self.progressView.isHidden = true
_setupUI()
}
@MainActor required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
private func updateEpisodeLabel() {
let totalEpisode = String(format: "EP%@".localized, "\(self.shortModel?.episode_total ?? 0)")
let currentEpisode = String(format: "EP%@".localized, self.videoInfo?.episode ?? "0")
let episodeStr = "\(currentEpisode)/\(totalEpisode)"
let range = NSRange(location: episodeStr.length() - totalEpisode.length(), length: totalEpisode.length())
let string = NSMutableAttributedString(string: episodeStr)
string.color = .colorEC3324()
string.setColor(.colorFFFFFF(), range: range)
episodeLabel.attributedText = string
}
}
extension SPExplorePlayerControlView {
@objc private func handleAllEpisodeButton() {
let vc = SPPlayerDetailViewController()
vc.shortPlayId = self.shortModel?.short_play_id
self.viewController?.navigationController?.pushViewController(vc, animated: true)
}
}
extension SPExplorePlayerControlView {
private func _setupUI() {
// addSubview(desLabel)
addSubview(videoInfoView)
toolView.addSubview(episodeIconImageView)
toolView.addSubview(episodeLabel)
toolView.addSubview(allEpisodeButton)
// desLabel.snp.makeConstraints { make in
// make.left.equalToSuperview().offset(15)
// make.right.lessThanOrEqualToSuperview().offset(-30)
// make.bottom.equalToSuperview().offset(-15)
// }
videoInfoView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(15)
// make.bottom.equalTo(desLabel.snp.top).offset(-10)
make.bottom.equalToSuperview().offset(-54)
}
episodeIconImageView.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.left.equalToSuperview().offset(14)
}
episodeLabel.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.left.equalTo(episodeIconImageView.snp.right).offset(4)
}
allEpisodeButton.snp.makeConstraints { make in
make.top.bottom.equalToSuperview()
make.right.equalToSuperview().offset(-14)
}
}
}