[swift] Swift Koloda를 사용하여 카드 스와이프 후 로딩 인디케이터 표시하기

개요

카드 스와이프 기능을 제공하는 라이브러리인 Swift Koloda를 사용하여, 카드를 스와이프한 후 로딩 인디케이터를 표시하고자 합니다. 이 기능을 구현하기 위해 Swift의 KolodaViewDelegate 프로토콜을 사용하고, 인디케이터를 관리하는 Spinner 뷰를 추가합니다.

구현

1. Swift Koloda 라이브러리 설치하기

먼저, Swift Koloda 라이브러리를 프로젝트에 설치합니다. 이를 위해서는 CocoaPods을 사용할 수 있습니다. Podfile에 다음과 같이 라이브러리를 추가합니다:

pod 'Koloda'

그리고 터미널을 열어 프로젝트 루트 디렉토리로 이동한 후 다음 명령을 실행합니다:

pod install

2. KolodaViewDelegate 구현하기

다음으로, KolodaViewDelegate를 구현하여 카드 스와이프 동작을 감지하고 처리합니다. 아래와 같이 구현합니다:

class MyViewController: UIViewController, KolodaViewDelegate {
    
    @IBOutlet weak var kolodaView: KolodaView!
    @IBOutlet weak var spinner: UIActivityIndicatorView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        kolodaView.delegate = self
        
        // 스와이프한 카드를 가려주기 위해 Spinner 숨기기
        spinner.isHidden = true
    }
    
    func kolodaDidSwipeCard(at index: Int, in direction: SwipeResultDirection) {
        // 카드가 스와이프되었을 때 로딩 인디케이터 표시
        spinner.isHidden = false
        spinner.startAnimating()
        
        // 네트워크 요청 등의 비동기 작업 수행
        // ...
        
        // 작업이 완료되었을 때 로딩 인디케이터 숨기기
        spinner.stopAnimating()
        spinner.isHidden = true
    }
    
    // ... 다른 KolodaViewDelegate 메소드들도 구현합니다
}

위 코드에서 kolodaDidSwipeCard 메소드에서는 카드가 스와이프되었을 때 로딩 인디케이터를 표시합니다. 비동기 작업이 끝난 후에는 로딩 인디케이터를 숨기고 작업 결과를 처리합니다.

3. Spinner 뷰 추가하기

인디케이터를 관리하기 위해 Spinner 뷰를 추가합니다. Storyboard 또는 Interface Builder에서 UIActivityIndicatorView를 추가하고, 필요한 위치와 크기로 조정합니다. 뷰 컨트롤러에 spinner 아웃렛을 연결하고, 스와이프 후에 이 뷰를 제어합니다.

결론

Swift Koloda를 사용하여 카드 스와이프 후 로딩 인디케이터를 표시하는 방법을 알아보았습니다. 이를 통해 사용자에게 작업 진행 상태를 시각적으로 표시할 수 있습니다. 이와 같은 기능을 적용하면 앱의 사용자 경험을 향상시킬 수 있습니다.

참고 자료