[swift] Swift Koloda를 사용하여 카드 스크롤 구현하기

카드 스크롤은 인기있는 애플리케이션에서 종종 사용되는 인터페이스 디자인 패턴입니다. 카드를 좌우로 스와이프하여 다음 항목으로 이동하는 기능을 구현할 수 있습니다. 이번에는 Swift Koloda 라이브러리를 사용하여 카드 스크롤을 구현하는 방법에 대해 알아보겠습니다.

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

Swift Koloda 라이브러리는 CocoaPods를 통해 간단하게 설치할 수 있습니다. 프로젝트의 Podfile에 다음과 같이 추가합니다:

pod 'Koloda'

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

2. KolodaView 생성하기

Koloda 라이브러리를 사용하기 위해 KolodaView를 뷰 컨트롤러에 추가해야 합니다. 먼저, 뷰 컨트롤러의 스토리보드에서 KolodaView를 추가하거나 코드로 생성할 수 있습니다.

import UIKit
import Koloda

class ViewController: UIViewController {

    @IBOutlet weak var kolodaView: KolodaView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        kolodaView.dataSource = self
        kolodaView.delegate = self
    }
}

extension ViewController: KolodaViewDelegate {
    // delegate method implementation
}

extension ViewController: KolodaViewDataSource {
    // data source method implementation
}
  1. KolodaViewDelegate 구현하기

KolodaViewDelegate 프로토콜을 구현하여 스와이프 동작에 대한 이벤트를 처리할 수 있습니다. 예를 들어, 카드가 왼쪽으로 스와이프되었을 때를 처리하는 함수를 작성해보겠습니다.

func koloda(_ koloda: KolodaView, didSwipeCardAt index: Int, in direction: SwipeResultDirection) {
    if direction == .left {
        print("카드가 왼쪽으로 스와이프 되었습니다.")
        // 다음 항목으로 이동하는 로직 작성
    }
}
  1. KolodaViewDataSource 구현하기

KolodaViewDataSource 프로토콜을 구현하여 카드의 콘텐츠를 제공할 수 있습니다. 콘텐츠에는 이미지, 텍스트 등 다양한 형식이 포함될 수 있습니다. 예를 들어, 다음과 같이 이미지를 포함하는 카드를 생성하는 함수를 작성해보겠습니다.

func koloda(_ koloda: KolodaView, viewForCardAt index: Int) -> UIView {
    let cardView = UIView(frame: CGRect(x: 0, y: 0, width: kolodaView.frame.width, height: kolodaView.frame.height))
    let imageView = UIImageView(frame: cardView.bounds)
    imageView.image = UIImage(named: "card_image_\(index)")
    cardView.addSubview(imageView)
    return cardView
}

func kolodaNumberOfCards(_ koloda: KolodaView) -> Int {
    return 5 // 총 카드 개수
}
  1. 실행 및 확인

이제 앱을 실행하고 카드를 스와이프해보세요. 카드가 왼쪽으로 스와이프되었을 때에 대한 로그가 출력되는 것을 확인할 수 있습니다.

참고 자료