MoviaBox/Thimra/Class/Home/View/SPHomeHotSearchView.swift
2025-04-22 17:30:04 +08:00

139 lines
3.9 KiB
Swift

//
// SPHomeHotSearchView.swift
// Thimra
//
// Created by Overseas on 2025/4/22.
//
import UIKit
class SPHomeHotSearchView: UIView {
override var intrinsicContentSize: CGSize {
return CGSize(width: kSPScreenWidth, height: kSPScreenHeight)
}
private var dataArr: [SPShortModel] = []
private lazy var bgView: UIView = {
let view = UIImageView(image: UIImage(named: "hot_search_bg_image"))
view.isUserInteractionEnabled = true
return view
}()
private lazy var titleLabel: UILabel = {
let label = UILabel()
label.font = .fontMedium(ofSize: 16)
label.textColor = .colorFFFFFF()
label.text = "Top Search".localized
return label
}()
private lazy var hotIconImageView: UIImageView = {
let imageView = UIImageView(image: UIImage(named: "hot_icon_02"))
return imageView
}()
private lazy var tableView: SPTableView = {
let tableView = SPTableView(frame: .zero, style: .plain)
tableView.delegate = self
tableView.dataSource = self
tableView.rowHeight = 112
tableView.separatorStyle = .none
tableView.showsVerticalScrollIndicator = false
tableView.showsHorizontalScrollIndicator = false
tableView.contentInset = .init(top: 0, left: 0, bottom: kSPTabbarSafeBottomMargin, right: 0)
SPHomeHotSearchCell.registerCell(tableView: tableView)
return tableView
}()
override init(frame: CGRect) {
super.init(frame: frame)
_setupUI()
requestDataArr()
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
extension SPHomeHotSearchView {
private func _setupUI() {
addSubview(bgView)
bgView.addSubview(titleLabel)
bgView.addSubview(hotIconImageView)
bgView.addSubview(tableView)
bgView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(16)
make.centerY.equalToSuperview()
make.top.equalToSuperview()
make.bottom.equalToSuperview()
}
titleLabel.snp.makeConstraints { make in
make.left.equalToSuperview().offset(12)
make.top.equalToSuperview().offset(20)
}
hotIconImageView.snp.makeConstraints { make in
make.centerY.equalTo(titleLabel)
make.left.equalTo(titleLabel.snp.right).offset(4)
}
tableView.snp.makeConstraints { make in
make.left.right.bottom.equalToSuperview()
make.top.equalToSuperview().offset(50)
}
}
}
//MARK: -------------- UITableViewDelegate & UITableViewDataSource --------------
extension SPHomeHotSearchView: UITableViewDelegate, UITableViewDataSource {
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = SPHomeHotSearchCell.dequeueReusableCell(tableView: tableView, indexPath: indexPath)
cell.model = dataArr[indexPath.row]
return cell
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.dataArr.count
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let model = dataArr[indexPath.row]
let vc = SPPlayerDetailViewController()
vc.shortPlayId = model.short_play_id
self.viewController?.navigationController?.pushViewController(vc, animated: true)
}
}
extension SPHomeHotSearchView {
private func requestDataArr() {
SPHomeAPI.requestHotSearchList { [weak self] list in
guard let self = self else { return }
if let list = list {
self.dataArr = list
self.tableView.reloadData()
}
}
}
}