본문 바로가기
iOS_오픈소스 라이브러리😎

[iOS_OpenSource] 로딩뷰(LoadingView) 쉽게 만들기 (JGProgressHUD) _ 3

by 개발하는윤기사 2023. 1. 12.
728x90
반응형

안녕하세요! 개발하는 윤기사입니다. 이번에 소개해드릴 라이브러리는 JGProgressHUD인데요!

 

이 라이브러리를 이용하면 로딩뷰를 쉽게 만들 수 있습니다! 제가 실제로 출시했던 앱에 사용했었습니다. 

 

SearchBar의 Text를 검색했을 때 API 통신을 해서 해당하는 값들을 불러오는 것이었는데,
아무래도 불러와야하는 값이 너무 크면 오래 걸리기도 하고, 앱이 멈춰 보일 수도 있을 겁니다.
그래서 앱 사용자에게 잠깐 기다리라는 의미로 로딩뷰를 표현하고자 했었습니다.

 

해당 OpenSource가 좋은 이유는 3가지가 있습니다!

  • 자동으로 중앙에 배치해줍니다!
  • 비동기적으로 처리할 때 다른 로딩 뷰에 비해서 오류가 없습니다.
  • 로딩 뷰가 등장하면 다른 뷰들을 클릭하지 못하게 해 줍니다.

 

1. JGProgressHUD를 import 해줍니다.

import JGProgressHUD

2. JGProgressHUD를 인스턴스화시켜줍니다.

private let hud = JGProgressHUD()

3. 로딩뷰를 표시하고 싶을 때 표시해 주고, 로딩이 끝나면 로딩뷰를 없애주면 됩니다.

//로딩뷰 표시하기
hud.show(in: self.view)
       
//로딩이 끝나면 로딩뷰 없애기       
self.hud.dismiss(animated: true)

 

🍎 전체 코드

//
//  SearchViewController.swift
//  One_Percent
//
//  Created by 윤여진 on 2022/09/26.
//

import UIKit
import JGProgressHUD

final class SearchViewController: BaseViewController {
    
    private let hud = JGProgressHUD()
        
    lazy var tableView: UITableView = {
        ...
    }()
    
    private let searchBar: UISearchBar = {
        ...
    }()
    
    ...
    
extension SearchViewController: UISearchBarDelegate {
        
    func searchBarSearchButtonClicked(_ searchBar: UISearchBar) {
        
        hud.show(in: self.view)
        
        StockNameAPIManager.shared.getStockName(query: searchBar.text ?? "") { list in
            
            self.stockList = list
            DispatchQueue.main.async {
                self.tableView.reloadData()
                self.hud.dismiss(animated: true)
                self.dismisskeyboard()
            }
        }
    }
   
    func dismisskeyboard() {
        view.endEditing(true)
    }

}
728x90
반응형