140 lines
4.0 KiB
Swift
140 lines
4.0 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.keyboardDismissMode = .onDrag
|
|
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()
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|