[swift] Swift Presentr의 기능 확장 방법

Swift Presentr는 iOS 앱에서 간단하게 커스텀 모달 다이얼로그를 만들 수 있도록 도와주는 라이브러리입니다. 이번 글에서는 Presentr의 기능을 확장하고 커스터마이징하는 방법에 대해 알아보겠습니다.

1. 커스텀 Presentr 스타일

Presentr에는 다양한 스타일을 적용할 수 있는 기능이 있습니다. 기본 스타일 외에도 원하는 디자인에 맞게 커스텀 스타일을 만들 수 있습니다. PresentrStyle 프로토콜을 채택하여 새로운 스타일을 만든 뒤, 스타일 객체를 Presentr 인스턴스에 설정해주면 됩니다. 아래는 커스텀 Presentr 스타일을 적용하는 예시 코드입니다.

class CustomPresentrStyle: PresentrStyle {
    override var backgroundOpacity: Float {
        return 0.5
    }

    override var backgroundColor: UIColor {
        return UIColor.black
    }

    override var cornerRadius: CGFloat {
        return 10
    }
}

let customPresentr = Presentr(presentationType: .alert)
customPresentr.presentationStyle = .custom
customPresentr.customPresentrStyle = CustomPresentrStyle()

위의 예시에서는 CustomPresentrStyle 클래스를 만들어 PresentrStyle을 상속받았습니다. backgroundOpacity, backgroundColor, cornerRadius 등의 프로퍼티를 오버라이딩하여 원하는 스타일을 설정합니다. 그리고 customPresentrStyle 프로퍼티를 사용하여 Presentr 인스턴스에 커스텀 스타일을 설정합니다.

2. 커스텀 Presentr 애니메이션

Presentr은 화면에 표시되는 애니메이션을 커스터마이징할 수 있는 기능도 제공합니다. PresentrAnimation 프로토콜을 채택하여 자신만의 애니메이션을 만들고, Presentr 인스턴스의 customPresentrAnimation 프로퍼티에 설정할 수 있습니다. 아래는 커스텀 Presentr 애니메이션을 만드는 예시 코드입니다.

class CustomPresentrAnimation: PresentrAnimation {
    func willPresent(using context: UIViewControllerContextTransitioning) {
        // 애니메이션 시작 전 실행할 작업
    }
    
    func presenting(using context: UIViewControllerContextTransitioning) {
        // 애니메이션 진행 중 실행할 작업
    }
    
    func didPresent(using context: UIViewControllerContextTransitioning) {
        // 애니메이션 완료 후 실행할 작업
    }
}

let customPresentr = Presentr(presentationType: .alert)
customPresentr.presentationStyle = .alert
customPresentr.customPresentrAnimation = CustomPresentrAnimation()

위의 예시에서는 CustomPresentrAnimation 클래스를 만들어 PresentrAnimation 프로토콜을 구현했습니다. willPresent, presenting, didPresent 메서드를 오버라이딩하여 각각 애니메이션이 시작 전, 진행 중, 완료 후에 실행될 작업을 정의합니다. 그리고 Presentr 인스턴스의 customPresentrAnimation 프로퍼티를 사용하여 커스텀 애니메이션을 설정합니다.

3. Presentr 기능 확장

Presentr은 상당히 유연한 구조를 가지고 있어, 기능을 확장하기에 용이합니다. Presentr의 소스 코드를 수정할 필요 없이, PresentrDelegate 프로토콜을 채택하여 다양한 이벤트를 처리할 수 있습니다. 예를 들어, Presentr의 다이얼로그에 버튼을 추가하고 버튼을 누를 때의 동작을 처리하고자 한다면, PresentrDelegate에 새로운 메서드를 추가하여 원하는 동작을 구현합니다.

extension ViewController: PresentrDelegate {
    func presentrDidTapButton() {
        // 버튼을 눌렀을 때 실행할 작업
    }
}

let customPresentr = Presentr(presentationType: .alert)
customPresentr.delegate = self

위의 예시 코드에서는 PresentrDelegate를 확장하여 presentrDidTapButton 메서드를 추가하였습니다. Presentr 인스턴스의 delegate 프로퍼티에는 PresentrDelegate를 구현한 객체를 할당합니다. 그러면 Presentr의 버튼을 누를 때마다 presentrDidTapButton 메서드가 호출되어 원하는 동작을 수행할 수 있습니다.


Presentr를 사용하여 iOS 앱의 커스텀 모달 다이얼로그를 만드는 방법에 대해 알아보았습니다. Presentr의 스타일, 애니메이션, 그리고 기능을 확장하는 방법을 숙지하면 더욱 효과적인 다이얼로그를 구현할 수 있을 것입니다. Presentr의 공식 문서 및 예제를 참고하여 더 자세한 사용법을 익혀보세요.

🔗 Presentr 공식 GitHub 저장소 🔗 Presentr 공식 문서