[swift] Swift SkeletonView 데이터 불러오기

Swift SkeletonView는 데이터를 비동기적으로 불러올 때 사용자에게 데이터 로딩 상태를 시각적으로 보여주는 라이브러리입니다. 이를 통해 사용자는 앱이 데이터를 로딩 중이라는 것을 알 수 있으며, 보다 나은 사용자 경험을 제공할 수 있습니다.

설치

Swift SkeletonView를 사용하기 위해서는 먼저 CocoaPods를 이용하여 프로젝트에 해당 라이브러리를 추가해야 합니다. Podfile에 다음과 같은 코드를 추가합니다.

pod 'SkeletonView'

그리고 터미널에서 pod install 명령을 실행하여 Cocoapods를 설치합니다.

사용 방법

  1. 먼저, SkeletonView를 import 합니다.
import SkeletonView
  1. 데이터 로딩 중인 뷰에다가 SkeletonView를 적용합니다. 다음과 같은 코드를 사용하여 View에 SkeletonView를 적용할 수 있습니다.
view.showAnimatedGradientSkeleton()
  1. 데이터 로딩이 완료되면 SkeletonView를 숨기는 코드를 사용합니다. 다음과 같은 코드를 사용하여 SkeletonView를 숨길 수 있습니다.
view.hideSkeleton()

예시

다음은 TableView를 사용하여 데이터를 비동기적으로 불러올 때 SkeletonView를 활용하는 예시입니다.

import UIKit
import SkeletonView

class ViewController: UIViewController {

    @IBOutlet weak var tableView: UITableView!
    
    var data: [String] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // TableView의 Delegate와 DataSource를 설정합니다.
        tableView.delegate = self
        tableView.dataSource = self
        
        // SkeletonView를 설정합니다.
        tableView.showAnimatedGradientSkeleton()
        
        // 데이터를 비동기적으로 로딩합니다.
        fetchData()
    }
    
    func fetchData() {
        DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
            self.data = ["Data 1", "Data 2", "Data 3"]
            self.tableView.hideSkeleton()
            self.tableView.reloadData()
        }
    }

}

extension ViewController: UITableViewDelegate, UITableViewDataSource {
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "TableViewCell", for: indexPath)
        cell.textLabel?.text = data[indexPath.row]
        return cell
    }
    
}

위의 예시에서는 TableView의 데이터를 비동기적으로 불러오는 기능을 구현하였습니다. 데이터를 로딩 중일 때는 SkeletonView를 노출시키고, 데이터 로딩이 완료되면 SkeletonView를 숨깁니다.

이제 Swift SkeletonView를 사용하여 데이터 로딩 상태를 시각적으로 보여줄 수 있습니다.

참고 자료