[swift] Swift Koloda를 사용하여 카드 스와이프 후 스프링 애니메이션 효과 추가하기

이번 포스트에서는 Swift Koloda 라이브러리를 사용하여 카드 스와이프 후 스프링 애니메이션 효과를 추가하는 방법에 대해 알아보겠습니다. Swift Koloda는 카드로 구성된 슬라이더를 쉽게 만들 수 있는 라이브러리로, 많은 앱에서 인기있는 UI 요소 중 하나입니다.

Koloda 라이브러리 설치하기

먼저 Koloda 라이브러리를 프로젝트에 설치해야합니다. 이를 위해 CocoaPods를 사용하겠습니다. Podfile을 열고 다음과 같이 Koloda 라이브러리를 추가합니다.

pod 'Koloda'

그런 다음 터미널에서 pod install 명령을 실행하여 라이브러리를 설치합니다.

카드 뷰 생성하기

Koloda 라이브러리를 사용하여 카드 뷰를 생성하는 방법을 알아보겠습니다. 우선 KolodaViewDelegateKolodaViewDataSource를 채택하도록 클래스를 선언합니다.

import UIKit
import Koloda

class ViewController: UIViewController, KolodaViewDelegate, KolodaViewDataSource {

    @IBOutlet weak var kolodaView: KolodaView!

    // TODO: 카드 데이터 배열 생성 및 초기화
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        kolodaView.delegate = self
        kolodaView.dataSource = self
    }

    // TODO: KolodaViewDelegate 및 KolodaViewDataSource 메서드 구현
    
}

카드 데이터 배열을 생성하고 초기화해야합니다. 예를 들어, 다음과 같이 cardData 배열을 생성할 수 있습니다.

var cardData: [String] = ["Card 1", "Card 2", "Card 3", "Card 4"]

KolodaViewDelegate 메서드 구현하기

이제 KolodaViewDelegate의 메서드를 구현하여 카드 뷰의 동작을 제어할 수 있습니다. 구현해야 할 메서드는 다음과 같습니다:

// MARK: - KolodaViewDelegate

extension ViewController {

    func kolodaNumberOfCards(_ koloda: KolodaView) -> Int {
        return cardData.count
    }

    func koloda(_ koloda: KolodaView, viewForCardAt index: Int) -> UIView {
        let cardView = UIView()
        // TODO: 카드 뷰의 내용을 설정합니다.
        return cardView
    }

    func koloda(_ koloda: KolodaView, didSwipeCardAt index: Int, in direction: SwipeResultDirection) {
        // TODO: 카드 스와이프 후 로직을 처리합니다.
    }

}

카드에 스프링 애니메이션 효과 추가하기

카드가 스와이프되었을 때 스프링 애니메이션 효과를 추가하려면 koloda(_ koloda: KolodaView, didSwipeCardAt index: Int, in direction: SwipeResultDirection) 메서드에서 다음과 같이 애니메이션을 적용하면 됩니다.

func koloda(_ koloda: KolodaView, didSwipeCardAt index: Int, in direction: SwipeResultDirection) {
    let cardView = koloda.viewForCard(at: index)
    // 스프링 애니메이션 적용
    cardView?.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
    UIView.animate(withDuration: 0.3, delay: 0, options: [.curveEaseOut], animations: {
        cardView?.transform = CGAffineTransform(scaleX: 1, y: 1)
    }) { _ in }
}

위의 코드에서는 카드가 스와이프되면 카드 뷰를 축소시킨 다음, 스프링 애니메이션을 적용하여 원래 크기로 돌아오게 합니다.

이제 Koloda 라이브러리를 사용하여 카드 스와이프 후 스프링 애니메이션 효과를 추가할 수 있습니다. 더 많은 기능을 활용하려면 Koloda 라이브러리의 공식 문서를 참조하십시오.

참고 자료