一些概念:
fromViewController是當前試圖控制器,toViewController是跳轉的視圖控制器
modalPresentationStyle:動畫的類型,有Custom、FullScreen等,Custom模式下不移除當前視圖,FullScreen下會移除
Animator:實現了UIViewControllerAnimatedTransitioning協議的對象,設置動畫時間和編寫動畫邏輯
使用步驟:
1.聲明公共類TransitionManager,遵循UIViewControllerAnimatedTransitioning 協議;
聲明方法transitionWithTransitionType 和initWithTransitionType 用于返回實例對象;
實現協議中的兩個方法transitionDuration 和animateTransition,前者返回動畫持續時間,后者根據轉場類型(present / dismiss)執行相應動畫內容;
還需聲明兩個方法presentAnimation和dismissAnimation,公共類就寫好了。
2.對PresentVC定義一個轉場動畫類(PresentVCTransitionAnimation)繼承自TransitionManager;
實現presentAnimation 和dismissAnimation 方法,分別為present和dismiss的動畫內容。
3.為PresentVC添加動畫代理UIViewControllerTransitioningDelegate,并設置代理為self;
實現動畫代理中的animationControllerForPresentedController 和 animationControllerForDismissedController 方法,方法返回的是 PresentVCTransitionAnimation對象,并傳回轉場類型(present / dismiss)。
4.在另一個VC中,通過presentViewController方法打開PresentVC時,會自動執行轉場動畫類PresentVCTransitionAnimation中的presentAnimation方法的動畫內容。
動畫完成后調用[transitionContextcompleteTransition:YES];
push 和pop 的用法與上面類似。