關于自定義轉場動畫

1. 首先被push的VC要簽訂 <UINavigationControllerDelegate>

2.實現協議方法- (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.實現Animator類

???? 3.1 首先Animator 遵循代理方法<UINavigationControllerAnimatedTransitioning>

???? 3.2 實現代理方法

????????? 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];

????????????????????? //自己實現的轉場動畫.............

????????????????????? //結束完成轉場

????????????????????? [transitionContext completeTransition:YES];

???????????????? }


//常用到的方法

//7.0后的新方法,截取一段自定義大小的當前屏幕顯示的VIEW ,可設置偏移量。 afterUpdates(個人理解:參數如果為NO,直接截取當前選中VIEW,如果為YES,會等當前選中的VIEW刷新到最新狀態時候在更新)

- (UIView *)resizableSnapshotViewFromRect:(CGRect )rect? afterScreenUpdates:(BOOL)afterUpdates? withCapInsets:(UIEdgeInsets)capInsets;? NS_AVAILABLE_IOS(7_0)





???????????

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容