[swift] PMAlertController 알림창 슬라이드 기능 추가하기

안녕하세요! 이번에는 Swift로 개발된 PMAlertController 라이브러리를 사용하여 알림창에 슬라이드 기능을 추가하는 방법에 대해 알아보겠습니다.

1. PMAlertController 라이브러리 설치하기

PMAlertController는 CocoaPods를 통해 설치할 수 있습니다. Podfile에 다음과 같이 추가해주세요.

pod 'PMAlertController'

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

2. 슬라이드 기능 추가하기

PMAlertController는 기본적으로 미리 정의된 알림 형식을 제공하며, 슬라이드 기능을 추가하기 위해서는 다음과 같은 단계를 따릅니다.

2-1. UIPanGestureRecognizer 추가하기

알림창이 표시된 후, 사용자의 슬라이드 동작을 감지하기 위해 UIPanGestureRecognizer를 추가합니다. 이를 위해 viewDidLoad() 메서드에서 다음과 같은 코드를 추가해주세요.

let panGesture = UIPanGestureRecognizer(target: self, action: #selector(panGestureAction(_:)))
self.view.addGestureRecognizer(panGesture)

2-2. UIPanGestureRecognizer 이벤트 처리하기

알림창을 슬라이드할 때마다 호출되는 이벤트를 처리하기 위해 panGestureAction() 메서드를 구현합니다. 다음과 같은 코드를 ViewController 클래스에 추가해주세요.

@objc func panGestureAction(_ sender: UIPanGestureRecognizer) {
    let translation = sender.translation(in: self.view)
    let velocity = sender.velocity(in: self.view)

    switch sender.state {
    case .changed:
        // 알림창을 슬라이드 시키는 코드를 추가합니다.
        self.view.transform = CGAffineTransform(translationX: translation.x, y: 0)

    case .ended:
        // 사용자의 속도와 이동 거리에 따라 알림창을 닫습니다.
        if velocity.x > 100 || translation.x > self.view.frame.width / 2 {
            self.dismiss(animated: true, completion: nil)
        } else {
            UIView.animate(withDuration: 0.3) {
                self.view.transform = .identity
            }
        }

    default:
        break
    }
}

위의 코드에서는 UIPanGestureRecognizer의 상태가 .changed일 때 알림창을 슬라이드하고, .ended일 때는 사용자의 속도와 이동 거리를 확인하여 알림창을 닫습니다.

3. 기타 기능 추가하기

PMAlertController에는 다양한 기능을 추가할 수 있는 옵션들이 제공됩니다. 원하는 스타일 및 동작을 설정하여 알림창을 커스터마이징해보세요! PMAlertController의 사용법에 대한 자세한 내용은 공식 GitHub 저장소를 참고해주세요.

이제 PMAlertController를 사용하여 알림창에 슬라이드 기능을 추가하는 방법을 알아보았습니다. 적용해보고 사용자에게 더 편리한 경험을 제공해보세요!