UIViewControllerTransitioning
UIViewControllerContextTransitioning以外
UIViewControllerAnimatedTransitioning
@protocol UIViewControllerAnimatedTransitioning <NSObject> - (NSTimeInterval)transitionDuration:(nullable id <UIViewControllerContextTransitioning>)transitionContext; - (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext; @optional - (id <UIViewImplicitlyAnimating>) interruptibleAnimatorForTransition:(id <UIViewControllerContextTransitioning>)transitionContext NS_AVAILABLE_IOS(10_0); - (void)animationEnded:(BOOL) transitionCompleted; @end
UIViewControllerInteractiveTransitioning
@protocol UIViewControllerInteractiveTransitioning <NSObject> - (void)startInteractiveTransition:(id <UIViewControllerContextTransitioning>)transitionContext; @optional @property(nonatomic, readonly) CGFloat completionSpeed; @property(nonatomic, readonly) UIViewAnimationCurve completionCurve; @property (nonatomic, readonly) BOOL wantsInteractiveStart NS_AVAILABLE_IOS(10_0); @end
UIViewControllerTransitioningDelegate
UIViewControllerTransitioningDelegateによって、どんなアニメーションをするかを渡すことでアニメーションを指定できる。
@protocol UIViewControllerTransitioningDelegate <NSObject> @optional - (nullable id <UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source; - (nullable id <UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed; - (nullable id <UIViewControllerInteractiveTransitioning>)interactionControllerForPresentation:(id <UIViewControllerAnimatedTransitioning>)animator; - (nullable id <UIViewControllerInteractiveTransitioning>)interactionControllerForDismissal:(id <UIViewControllerAnimatedTransitioning>)animator; - (nullable UIPresentationController *)presentationControllerForPresentedViewController:(UIViewController *)presented presentingViewController:(nullable UIViewController *)presenting sourceViewController:(UIViewController *)source NS_AVAILABLE_IOS(8_0); @end
UIPercentDrivenInteractiveTransition (UIViewControllerInteractiveTransitioningの実装)
@interface UIPercentDrivenInteractiveTransition : NSObject <UIViewControllerInteractiveTransitioning> @property (readonly) CGFloat duration; @property (readonly) CGFloat percentComplete; @property (nonatomic,assign) CGFloat completionSpeed; @property (nonatomic,assign) UIViewAnimationCurve completionCurve; @property (nullable, nonatomic, strong)id <UITimingCurveProvider> timingCurve NS_AVAILABLE_IOS(10_0); @property (nonatomic) BOOL wantsInteractiveStart NS_AVAILABLE_IOS(10_0); - (void)pauseInteractiveTransition NS_AVAILABLE_IOS(10_0); - (void)updateInteractiveTransition:(CGFloat)percentComplete; - (void)cancelInteractiveTransition; - (void)finishInteractiveTransition; @end