iOS转场类

当开发中切换控制器时的默认执行的动画效果无法满足我们日常需求,我们则可以通过实现自定义想要的动画效果。

一、转场动画相关类

1.  动画控制器 (Animation Controllers) 遵从 UIViewControllerAnimatedTransitioning 协议,并且负责实际执行动画。可实现以下代码执行动画。

- (NSTimeInterval)transitionDuration:(nullable id <UIViewControllerContextTransitioning>)transitionContext;

- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext;

2.  交互控制器 (Interaction Controllers) 通过遵从 UIViewControllerInteractiveTransitioning 协议来控制可交互式的转场。UIPercentDrivenInteractiveTransition是继承了UIViewControllerInteractiveTransitioning的实现类。

3.  转场代理 (Transitioning Delegates) 根据不同的转场类型方便的提供需要的动画控制器和交互控制器。有以下可实现的代理方法,前两个方法是非手势Present和Dismiss执行动画效果,后面两个是手势执行动画效果。
 

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

4. 转场上下文 (Transitioning Contexts) 定义了转场过程中视图控制器和相关的属性方法。 例如:

- (nullable __kindof UIViewController *)viewControllerForKey:(UITransitionContextViewControllerKey)key;

- (nullable __kindof UIView *)viewForKey:(UITransitionContextViewKey)key

5.  转场协调器(Transition Coordinators) 可以在运行转场动画时,并行的运行其他动画。 转场协调器遵从 UIViewControllerTransitionCoordinator 协议。

// 与动画控制器中的转场动画同步,执行其他动画
- (BOOL)animateAlongsideTransition:(void (^ __nullable)(id <UIViewControllerTransitionCoordinatorContext>context))animation
                        completion:(void (^ __nullable)(id <UIViewControllerTransitionCoordinatorContext>context))completion;

// 与动画控制器中的转场动画同步,在指定的视图内执行动画
- (BOOL)animateAlongsideTransitionInView:(nullable UIView *)view
                               animation:(void (^ __nullable)(id <UIViewControllerTransitionCoordinatorContext>context))animation
                              completion:(void (^ __nullable)(id <UIViewControllerTransitionCoordinatorContext>context))completion;

二、其它

iOS 自定义转场动画浅谈里面实现了对执行动画效果的封装,是按照XWTransition框架的样式实现了对转场动画和手势动画不同地实现,实现的原理很简单,通过实现一个单例代理类,将转场实现方法放在类中实现,并通过实现非手势动画及手势动画进行转场。

 

借鉴:自定义 ViewController 容器转场

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值