Skip to content

Commit

Permalink
[Design] Health-Food-Me#28 - 검색 완료 UI 지도 보기 구현
Browse files Browse the repository at this point in the history
지도 보기 클릭 및 스크롤 구현
  • Loading branch information
0inn committed Jul 13, 2022
1 parent 6909d59 commit c6e3581
Showing 1 changed file with 104 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,11 @@ final class SearchResultVC: UIViewController {

var searchContent: String = ""
weak var delegate: SearchResultVCDelegate?
private var isBottom: Bool = true

private let mapView: UIView = {
let view = UIView()
view.backgroundColor = .mainRed
view.backgroundColor = .mainGreen
return view
}()

Expand All @@ -39,7 +40,7 @@ final class SearchResultVC: UIViewController {

private lazy var backButton: UIButton = {
let btn = UIButton()
btn.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 12)
btn.contentEdgeInsets = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: 12)
btn.setImage(ImageLiterals.Search.beforeIcon, for: .normal)
btn.addTarget(self, action: #selector(popToSearchVC), for: .touchUpInside)
return btn
Expand All @@ -50,15 +51,41 @@ final class SearchResultVC: UIViewController {
view.backgroundColor = .helfmeLineGray
return view
}()


private let searchResultHeaderView: UIView = UIView()

private lazy var searchResultHeaderButton: UIButton = {
let btn = UIButton()
btn.setTitle("지도 뷰로 보기", for: .normal)
btn.setTitleColor(UIColor.helfmeGray1, for: .normal)
btn.titleLabel?.font = .NotoRegular(size: 14)
btn.isHidden = true
btn.addTarget(self, action: #selector(moveSearchResultView), for: .touchUpInside)
return btn
}()

private lazy var searchResultTableView: UITableView = {
let tv = UITableView()
tv.separatorStyle = .none
tv.showsVerticalScrollIndicator = false
tv.rowHeight = 127
tv.backgroundColor = .helfmeWhite
tv.keyboardDismissMode = .onDrag
tv.tableHeaderView = searchResultHeaderView
tv.tableHeaderView?.frame.size.height = 56
return tv
}()

// MARK: - View Life Cycle

override func viewDidLoad() {
super.viewDidLoad()

initUI()
setUI()
setLayout()
setDelegate()
registerCell()
}
}

Expand All @@ -69,40 +96,74 @@ extension SearchResultVC {
delegate?.searchResultVCSearchType(type: .recent)
navigationController?.popViewController(animated: false)
}

@objc func moveSearchResultView() {
initUI()
}
}

// MARK: - Methods

extension SearchResultVC {
private func initUI() {
UIView.animate(withDuration: 0.2, animations: {
self.searchResultTableView.transform = CGAffineTransform(translationX: 0, y: 500)
})
searchResultHeaderButton.isHidden = true
isBottom = true
}

private func setUI() {
self.navigationController?.isNavigationBarHidden = true
view.backgroundColor = .helfmeWhite
}

private func setLayout() {
view.addSubviews(searchTextField, lineView)
view.addSubviews(searchTextField, lineView, mapView, searchResultTableView)

searchTextField.snp.makeConstraints {
$0.top.equalTo(view.safeAreaLayoutGuide)
$0.leading.equalTo(view.safeAreaLayoutGuide).inset(20)
$0.trailing.equalTo(view.safeAreaLayoutGuide).inset(25)
$0.top.leading.trailing.equalTo(view.safeAreaLayoutGuide)
$0.height.equalTo(56)
}

backButton.snp.makeConstraints {
$0.height.equalTo(24)
$0.width.equalTo(36)
$0.width.equalTo(56)
}

lineView.snp.makeConstraints {
$0.top.equalTo(searchTextField.snp.bottom)
$0.leading.trailing.equalTo(view.safeAreaLayoutGuide)
$0.height.equalTo(1)
}

mapView.snp.makeConstraints {
$0.top.equalTo(lineView.snp.bottom)
$0.leading.trailing.bottom.equalToSuperview()
}

searchResultHeaderView.addSubviews(searchResultHeaderButton)

searchResultHeaderButton.snp.makeConstraints {
$0.trailing.equalTo(searchResultHeaderView.snp.trailing).inset(20)
$0.centerY.equalTo(searchResultHeaderView)
}

searchResultTableView.snp.makeConstraints {
$0.top.equalTo(lineView.snp.bottom)
$0.leading.trailing.bottom.equalToSuperview()
}
}

private func setDelegate() {
searchTextField.delegate = self

searchResultTableView.delegate = self
searchResultTableView.dataSource = self
}

private func registerCell() {
SearchResultTVC.register(target: searchResultTableView)
}
}

Expand All @@ -115,6 +176,41 @@ extension SearchResultVC: UITextFieldDelegate {
}
}

// MARK: - UITableViewDelegate

extension SearchResultVC: UITableViewDelegate {

}

// MARK: - UITableViewDataSource

extension SearchResultVC: UITableViewDataSource {
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
guard let cell = tableView.dequeueReusableCell(withIdentifier: SearchResultTVC.className, for: indexPath) as? SearchResultTVC else { return UITableViewCell() }
return cell
}
}

// MARK: - UIScrollViewDelegate

extension SearchResultVC: UIScrollViewDelegate {
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
if (scrollView.contentOffset.y == 0 && isBottom) {
self.searchResultTableView.isScrollEnabled = false
UIView.animate(withDuration: 0.2, animations: {
self.searchResultTableView.transform = CGAffineTransform(translationX: 0, y: 0)
self.searchResultHeaderButton.isHidden = false
})
}
isBottom = false
self.searchResultTableView.isScrollEnabled = true
}
}

// MARK: - Network

extension SearchResultVC {
Expand Down

0 comments on commit c6e3581

Please sign in to comment.