1. 首先被push的VC要簽訂 <UINavigationControllerDelegate>
2.實現(xiàn)協(xié)議方法- (nullable id <UINavigationControllerAnimatedTransitioning>)navigationController:(UINavigationController *)navigationController?? animationControllerForOperation:(UINavigationControllerOperation)operation? fromViewController:(UIViewController *)fromVC? toViewController:(UIViewController *)toVC
{
?? //在這里返回一個UINavigationControllerAnimatedTransitioning的實例
NSObject<UINavigationControllerAnimatedTransitioning>animated;
animated = [Animator alloc] init];
return animated;
}
3.實現(xiàn)Animator類
???? 3.1 首先Animator 遵循代理方法<UINavigationControllerAnimatedTransitioning>
???? 3.2 實現(xiàn)代理方法
????????? 3.2.1 - (NSTimeInterval)transitionDuration:?
?????????????? (id<UINavigationControllerAnimatedTransitioning>)transitionContext
? ? ? ? ? ? ? ?? {
???????????????????? //動畫時間?
???????????????????? return ANIMATION_TIME;
???????????????? }
???????????? 3.2.2 - (void)animationTransition:??
??????????????? (id<UINavigationControllerAnimatedTransitioning>)transitionContext
??????????????? {
?????????????????????? //transitionContext 上下文
????????????????????????? UIView *container = [transitionContext containerView];
?????????????????????? //獲取當前VC
???????????????????????? UIViewController *fromVC = [transitionContext???
??????????????????????????? viewControllerForKey:UITransitionContextFromViewControllerKey];
????????????????????? //獲取要pop到的VC
??????????????????????? UIViewController *toVC? = [transitionContext
??????????????????????????? viewControllerForKey:UITransitionContextToViewControllerKey];
????????????????????? //自己實現(xiàn)的轉(zhuǎn)場動畫.............
????????????????????? //結(jié)束完成轉(zhuǎn)場
????????????????????? [transitionContext completeTransition:YES];
???????????????? }
//常用到的方法
//7.0后的新方法,截取一段自定義大小的當前屏幕顯示的VIEW ,可設(shè)置偏移量伞梯。 afterUpdates(個人理解:參數(shù)如果為NO,直接截取當前選中VIEW糙箍,如果為YES,會等當前選中的VIEW刷新到最新狀態(tài)時候在更新)
- (UIView *)resizableSnapshotViewFromRect:(CGRect )rect? afterScreenUpdates:(BOOL)afterUpdates? withCapInsets:(UIEdgeInsets)capInsets;? NS_AVAILABLE_IOS(7_0)
???????????