From 611f271e03e9ff2b5c32a9bbb2e3eb719c178df5 Mon Sep 17 00:00:00 2001
From: 杨锴 <841720330@qq.com>
Date: 星期三, 28 八月 2024 11:44:09 +0800
Subject: [PATCH] fix UI

---
 XQMuse/Root/Home/VC/SearchVC.swift |  185 +++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 181 insertions(+), 4 deletions(-)

diff --git a/XQMuse/Root/Home/VC/SearchVC.swift b/XQMuse/Root/Home/VC/SearchVC.swift
index f1dedb1..a282e91 100644
--- a/XQMuse/Root/Home/VC/SearchVC.swift
+++ b/XQMuse/Root/Home/VC/SearchVC.swift
@@ -6,11 +6,188 @@
 //
 
 import UIKit
+import JQTools
+import RxSwift
+import RxDataSources
+
+class SearchCache{
+
+				static var array = NSMutableArray()
+				static let cacheSearchPath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first!.appendingPathComponent("search")
+
+				static func readList()->NSMutableArray{
+								if !FileManager.default.fileExists(atPath: cacheSearchPath.absoluteString){
+												try? FileManager.default.createDirectory(at: cacheSearchPath, withIntermediateDirectories: true)
+								}
+
+								let searchPlistPath = cacheSearchPath.appendingPathComponent("search.plist")
+								if let tempArray = NSMutableArray(contentsOfFile: searchPlistPath.droppedScheme()!.absoluteString){
+												array = tempArray
+								}
+								return array
+				}
+
+				static func writeToList(_ content:String){
+								if array.contains(content){
+												var exchangeIndex:Int?
+												for (index,c) in array.enumerated(){
+																if (c as! String) == content{
+																				exchangeIndex = index;break
+																}
+												}
+												if exchangeIndex != nil{
+																array.exchangeObject(at: 0, withObjectAt: exchangeIndex!)
+												}
+								}else{
+												array.add(content)
+								}
+				}
+
+				static func writeToPath(){
+								let searchPlistPath = cacheSearchPath.appendingPathComponent("search.plist")
+								array.write(to: searchPlistPath, atomically: true)
+				}
+
+				static func deleteAtIndex(_ index:Int){
+								array.removeObject(at: index)
+				}
+}
 
 class SearchVC: BaseVC {
-
-    override func viewDidLoad() {
-        super.viewDidLoad()
+				@IBOutlet weak var cacheSearchCollectionView: UICollectionView!
+				@IBOutlet weak var cacheSearchHei: NSLayoutConstraint!
+				@IBOutlet weak var tf_search: UITextField!
+				@IBOutlet weak var tableView: UITableView!
+				
+				override func viewDidLoad() {
+								super.viewDidLoad()
 								title = "心泉·疗愈"
-    }
+
+								_ = SearchCache.readList()
+								cacheSearchCollectionView.reloadData()
+				}
+
+				override func viewDidDisappear(_ animated: Bool) {
+								super.viewDidDisappear(animated)
+								SearchCache.writeToPath()
+				}
+
+				override func setUI() {
+								super.setUI()
+								view.backgroundColor = UIColor(hexString: "f6f6f6")
+								tf_search.delegate = self
+								tf_search.returnKeyType = .search
+
+								let flowLayout = EqualCellSpaceFlowLayout(.left, 11.5)
+								cacheSearchCollectionView.delegate = self
+								cacheSearchCollectionView.dataSource = self
+								cacheSearchCollectionView.isScrollEnabled = false
+								cacheSearchCollectionView.collectionViewLayout = flowLayout
+								cacheSearchCollectionView.contentInset = UIEdgeInsets(top: 0, left: 20.5, bottom: 0, right: 20.5)
+								cacheSearchCollectionView.backgroundColor = .clear
+								cacheSearchCollectionView.register(UINib(nibName: "SearchHistoryCCell", bundle: nil), forCellWithReuseIdentifier: "_SearchHistoryCCell")
+
+								tableView.delegate = self
+								tableView.dataSource = self
+								tableView.separatorStyle = .none
+								tableView.backgroundColor = .clear
+								tableView.register(UINib(nibName: "SearchHotTCell", bundle: nil), forCellReuseIdentifier: "_SearchHotTCell")
+
+				}
+
+				override func setRx() {
+								cacheSearchCollectionView.rx.observe(CGSize.self, "contentSize").map { (size) -> CGFloat? in
+												if let size = size{
+																return size.height
+												}
+												return nil
+								}.subscribe(onNext: { [unowned self](height) in
+												if let height = height{
+																self.cacheSearchHei.constant = height
+												}
+								}).disposed(by: disposeBag)
+				}
+
+				@objc func closeAction(_ btn:UIButton){
+								CommonAlertView.show(title: "提示", content: "是否删除?") {[unowned self] state in
+												if state{
+																SearchCache.deleteAtIndex(btn.tag - 100)
+																self.cacheSearchCollectionView.reloadData()
+												}
+								}
+				}
+
+				@IBAction func searchAction(_ sender: UIButton) {
+								searchDone()
+				}
+
+				private func searchDone(){
+								if tf_search.text!.isEmpty{
+												alert(msg: "请输入冥想搜索内容");return
+								}
+
+								tf_search.resignFirstResponder()
+								SearchCache.writeToList(tf_search.text!)
+				}
+}
+
+extension SearchVC:UITableViewDelegate & UITableViewDataSource{
+				func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
+								let cell = tableView.dequeueReusableCell(withIdentifier: "_SearchHotTCell", for: indexPath) as! SearchHotTCell
+								cell.selectionStyle = .none
+								cell.backgroundColor = .clear
+								return cell
+				}
+
+				func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
+								return 10
+				}
+
+				func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
+								return 41
+				}
+}
+
+extension SearchVC:UICollectionViewDelegate & UICollectionViewDataSource{
+
+				func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
+								searchDone()
+				}
+
+				func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
+								return SearchCache.array.count
+
+				}
+
+				func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
+
+								let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "_SearchHistoryCCell", for: indexPath) as! SearchHistoryCCell
+								cell.label_content.text = (SearchCache.array[indexPath.row] as! String)
+								cell.btn_close.addTarget(self, action: #selector(closeAction(_:)), for: .touchUpInside)
+								cell.btn_close.tag = 100+indexPath.row
+								return cell
+				}
+}
+
+extension SearchVC:UICollectionViewDelegateFlowLayout{
+				func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
+								return 11.5
+				}
+
+				func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
+								return 11.5
+				}
+
+				func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
+								let str = SearchCache.array[indexPath.row] as! String
+								let w = String.jq_getWidth(text: str, height: 11, font: 12)
+								return CGSize(width: w + 25, height: 28.1)
+				}
+}
+
+extension SearchVC:UITextFieldDelegate{
+				func textFieldShouldReturn(_ textField: UITextField) -> Bool {
+								searchDone()
+								return true
+				}
 }

--
Gitblit v1.7.1