화면전환할때 쓰이는 Delegate네요
커스텀한 present기능을 사용하려면 modalPresentationStyle 프로퍼티를 .custom으로 설정하라고 합니다.
그리고 터치입력 또는 사용자와 상호작용(interactions)를 제어하고 싶다면 Interaction 메서드를 사용하여 애니메이션 과정을 나타낼 수 있습니다.
custom modal transition style의 경우 애니메이터 객체외
UIPresentationController 객체를 사용할 수 있습니다.
시스템은 뷰 컨트롤러를 제공하기 전에 프리젠테이션 컨트롤러를 생성하고 뷰 컨트롤러가 해제될 때까지 해당 개체에 대한 참조를 유지합니다.
public protocol UIViewControllerTransitioningDelegate : NSObjectProtocol {
// delegate에게 VC가 Presenting시 사용할 transition animator객체 요청
@available(iOS 2.0, *)
optional func animationController(forPresented presented: UIViewController, presenting: UIViewController, source: UIViewController) -> UIViewControllerAnimatedTransitioning?
// delegate에게 VC가 Dismiss시 사용할 transition animator객체 요청
@available(iOS 2.0, *)
optional func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning?
// delegate에게 VC가 Presenting시 사용할 interactive animator객체 요청
optional func interactionControllerForPresentation(using animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
// delegate에게 VC가 Dismiss시 사용할 interactive animator객체 요청
optional func interactionControllerForDismissal(using animator: UIViewControllerAnimatedTransitioning) -> UIViewControllerInteractiveTransitioning?
// UIModalPresentationStyle.custom시 이 메서드가 호출되고 custom 스타일을 관리하는 presentaion controller를 요청
@available(iOS 8.0, *)
optional func presentationController(forPresented presented: UIViewController, presenting: UIViewController?, source: UIViewController) -> UIPresentationController?
}
ViewController를 전환할때 애니메이션을 주는 프로토콜입니다.
public protocol UIViewControllerAnimatedTransitioning : NSObjectProtocol {
// 애니메이션의 동작시간(second 단위)
func transitionDuration(using transitionContext: UIViewControllerContextTransitioning?) -> TimeInterval
// 애니메이션의 효과
func animateTransition(using transitionContext: UIViewControllerContextTransitioning)
@available(iOS 10.0, *)
optional func interruptibleAnimator(using transitionContext: UIViewControllerContextTransitioning) -> UIViewImplicitlyAnimating
optional func animationEnded(_ transitionCompleted: Bool)
}