97 lines
2.3 KiB
Swift
97 lines
2.3 KiB
Swift
//
|
|
// SPSearchHomeView.swift
|
|
// Thimra
|
|
//
|
|
// Created by 曾觉新 on 2025/4/17.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class SPSearchHomeView: UIView {
|
|
|
|
|
|
var viewModel: SPSearchViewModel? {
|
|
didSet {
|
|
viewModel?.addObserver(self, forKeyPath: "searchHistoryArr", context: nil)
|
|
|
|
historyView.viewModel = self.viewModel
|
|
|
|
_updateUI()
|
|
}
|
|
}
|
|
|
|
var searchTextBlock: ((_ text: String) -> Void)?
|
|
|
|
//MARK: UI属性
|
|
private lazy var stackView: UIStackView = {
|
|
let view = UIStackView()
|
|
view.axis = .vertical
|
|
view.spacing = 28
|
|
return view
|
|
}()
|
|
|
|
private lazy var historyView: SPHomeSearchHistoryView = {
|
|
let view = SPHomeSearchHistoryView()
|
|
view.searchTextBlock = { [weak self] text in
|
|
self?.searchTextBlock?(text)
|
|
}
|
|
return view
|
|
}()
|
|
|
|
///热门搜索
|
|
private lazy var hotSearchView: SPHomeHotSearchView = {
|
|
let view = SPHomeHotSearchView()
|
|
return view
|
|
}()
|
|
|
|
deinit {
|
|
viewModel?.removeObserver(self, forKeyPath: "searchHistoryArr")
|
|
}
|
|
|
|
override init(frame: CGRect) {
|
|
super.init(frame: frame)
|
|
|
|
stackView.addArrangedSubview(historyView)
|
|
|
|
_setupUI()
|
|
}
|
|
|
|
required init?(coder: NSCoder) {
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
|
|
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
|
|
if keyPath == "searchHistoryArr" {
|
|
_updateUI()
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
extension SPSearchHomeView {
|
|
|
|
private func _setupUI() {
|
|
addSubview(stackView)
|
|
|
|
stackView.snp.makeConstraints { make in
|
|
make.top.equalToSuperview().offset(10)
|
|
make.left.right.bottom.equalToSuperview()
|
|
// make.edges.equalToSuperview()
|
|
}
|
|
}
|
|
|
|
private func _updateUI() {
|
|
stackView.removeAllArrangedSubview()
|
|
|
|
if (self.viewModel?.searchHistoryArr.count ?? 0) > 0 {
|
|
self.stackView.addArrangedSubview(self.historyView)
|
|
}
|
|
|
|
self.stackView.addArrangedSubview(self.hotSearchView)
|
|
}
|
|
|
|
}
|