[swift] TableFlip 애니메이션을 사용하여 Swift에서 테이블 뷰에서 셀을 시간 지연 후 삭제하는 방법

테이블 뷰에서 셀을 삭제하는 간단한 방법은 deleteRows 메서드를 사용하는 것입니다. 그러나 때로는 셀이 삭제되기 전에 애니메이션을 적용하여 사용자에게 시각적인 피드백을 제공하는 것이 좋을 수 있습니다. TableFlip 애니메이션 프레임워크를 사용하면 테이블 뷰에서 셀을 시간 지연 후 삭제하는 동적인 효과를 구현할 수 있습니다.

TableFlip 애니메이션 설치하기

먼저, 프로젝트에 TableFlip 애니메이션을 설치해야 합니다. Cocoapods를 사용하여 설치하는 방법은 다음과 같습니다.

  1. Podfile 파일을 열고 다음 코드를 추가합니다.
pod 'TableFlip'
  1. 터미널에서 프로젝트 디렉토리로 이동한 후 pod install 명령어를 실행합니다.
$ cd [프로젝트 디렉토리 경로]
$ pod install
  1. Podfile에 정의된 종속성을 포함한 새로운 workspace 파일이 생성됩니다. 터미널에서 이 파일로 열어줍니다.
$ open [프로젝트 이름].xcworkspace

TableFlip 애니메이션 적용하기

  1. 먼저, TableFlip을 import 해줍니다.
import TableFlip
  1. UITableViewDelegate 프로토콜의 tableView(_:commit:forRowAt:) 메서드를 구현합니다.
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
    if editingStyle == .delete {
        let cell = tableView.cellForRow(at: indexPath)
        
        // TableFlip 애니메이션 적용
        cell?.flip(.fromLeft, duration: 0.3)
        
        DispatchQueue.main.asyncAfter(deadline: .now() + 0.3) {
            // 지연 후 셀 삭제
            tableView.deleteRows(at: [indexPath], with: .automatic)
        }
    }
}

위 코드는 사용자가 셀을 삭제하도록 요청하면, 해당 셀에 TableFlip 애니메이션을 적용하고 0.3초 이후에 셀을 삭제하는 로직입니다. 애니메이션은 cell?.flip(.fromLeft, duration: 0.3) 코드로 적용되며, DispatchQueue.main.asyncAfter를 사용하여 적절한 시간 지연을 주고 셀을 삭제합니다.

이제 테이블 뷰에서 셀을 삭제할 때 TableFlip 애니메이션을 적용하여 동적인 효과를 구현할 수 있습니다.

참고 자료