// // 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() } } } }