140 lines
4.3 KiB
Swift
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)
|
|
}
|
|
}
|
|
}
|