[swift] Swift Koloda를 사용하여 카드 소팅 기능 구현하기

이번에는 Swift Koloda 라이브러리를 사용하여 카드 소팅 기능을 구현하는 방법에 대해 알아보겠습니다. Swift Koloda는 카드 스와이프 기능을 추가하는 데 도움을 주는 유용한 라이브러리입니다.

Koloda 라이브러리 추가하기

먼저, 프로젝트에 Koloda 라이브러리를 추가해야 합니다. Koloda는 Cocoapods를 통해 쉽게 설치할 수 있습니다. Podfile에 다음과 같은 라인을 추가하고, pod install 명령어를 실행하여 라이브러리를 설치합니다.

pod 'Koloda'

Koloda 카드 뷰 설정하기

카드 소팅 기능을 구현하기 위해서는 Koloda 카드 뷰를 설정해야 합니다. Koloda 카드 뷰는 카드를 나타내는 역할을 하며, 여기에서 원하는 소팅 로직을 구현할 수 있습니다.

먼저, KolodaViewDataSourceKolodaViewDelegate 프로토콜을 구현해야 합니다. 이를 위해 ViewController 클래스에 다음과 같은 코드를 추가합니다.

class ViewController: UIViewController, KolodaViewDataSource, KolodaViewDelegate {

    @IBOutlet weak var kolodaView: KolodaView!

    override func viewDidLoad() {
        super.viewDidLoad()
        kolodaView.dataSource = self
        kolodaView.delegate = self
    }

    // 카드 개수 반환
    func kolodaNumberOfCards(_ koloda: KolodaView) -> Int {
        return 10 // 카드 개수는 예시로 10개로 설정
    }

    // 카드 뷰 설정
    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))
        cardView.backgroundColor = UIColor.white
        cardView.layer.cornerRadius = 10

        // 카드 내용 추가
        let label = UILabel(frame: CGRect(x: 0, y: 0, width: cardView.frame.width, height: cardView.frame.height))
        label.text = "Card \(index+1)"
        label.font = UIFont.preferredFont(forTextStyle: .title)
        label.textAlignment = .center
        cardView.addSubview(label)

        return cardView
    }
}

여기서, kolodaNumberOfCards 메서드에서는 카드의 개수를 반환하고, koloda 메서드에서는 카드 뷰의 내용을 설정합니다.

카드 소팅 로직 구현하기

Koloda 카드 뷰를 구성했다면 이제 원하는 소팅 로직을 추가할 수 있습니다. 예를 들어, 카드를 좌측으로 스와이프할 때는 다음 카드로 이동하고, 우측으로 스와이프할 때는 카드를 버리는 로직을 구현해보겠습니다.

extension ViewController {
    // 카드를 좌측으로 스와이프할 때 호출
    func koloda(_ koloda: KolodaView, didSwipeCardAt index: Int, in direction: SwipeResultDirection) {
        if direction == .left {
            kolodaView.revertAction() // 카드를 다시 원래 위치로 되돌림
            kolodaView.swipe(.left) // 다음 카드로 이동
        } else if direction == .right {
            kolodaView.swipe(.right) // 카드를 버림
        }
    }
}

이제 앱을 실행하고, 카드 뷰를 스와이프해보면 설정한 소팅 로직에 따라 카드가 움직이는 것을 확인할 수 있습니다.

결론

이렇게 Swift Koloda 라이브러리를 사용하여 카드 소팅 기능을 구현하는 방법에 대해 알아보았습니다. Koloda 라이브러리를 사용하면 손쉽게 카드 스와이프 기능을 추가할 수 있습니다. 다양한 추가 설정 및 커스터마이징도 가능하니 필요에 따라 적절히 활용해보세요.

참고 문서: Swift Koloda Github 페이지