Custom Transition

E_H·2021년 7월 7일
0

Transition

UIViewControllerTransitioningDelegate

화면전환할때 쓰이는 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?
}

UIViewControllerAnimatedTransitioning

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)
}

0개의 댓글