關(guān)于自定義轉(zhuǎn)場動畫

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

?????????????????????? //獲取當(dāng)前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后的新方法,截取一段自定義大小的當(dāng)前屏幕顯示的VIEW ,可設(shè)置偏移量。 afterUpdates(個人理解:參數(shù)如果為NO,直接截取當(dāng)前選中VIEW,如果為YES,會等當(dāng)前選中的VIEW刷新到最新狀態(tài)時候在更新)

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





???????????

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容