1、转场动画
iOS7之后开发者可以自定义界面切换的转场动画,就是在模态弹出(present、dismiss),Navigation的(push、pop),TabBar的系统切换效果之外自定义切换动画!
模态弹出自定义出push、pop效果,可以侧滑:
2、实现步骤
2.1、自定义转场动画
1》创建自定义文件
@interface CustomTransform : NSObject<UIViewControllerAnimatedTransitioning>
2》实现UIViewControllerAnimatedTransitioning方法
//设置转场时间 - (NSTimeInterval)transitionDuration:(nullable id <UIViewControllerContextTransitioning>)transitionContext; //设置转场效果 - (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext;
.m相关类说明:
//表示转场动画上下文 UIViewControllerContextTransitioning //当前控制器fromVC和目标控制器toVC //vc1-->present-->vc2: fromVC是vc1,toVC是vc2 //vc2-->dismiss-->vc1: fromVC是vc2,toVC是vc1 UIViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; UIViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; //对应控制器的view视图 UIView *fromView =[transitionContext viewForKey:UITransitionContextFromViewKey]; UIView *toView =[transitionContext viewForKey:UITransitionContextToViewKey]; //presentingViewController,presentedViewController vc1-->present-->vc2,vc1.presentedViewController 就是vc2;vc2.presentingViewController 就是vc1。 //更新动画进度 - (void)updateInteractiveTransition:(CGFloat)percentComplete; //转场结束 - (void)finishInteractiveTransition; //转场取消 - (void)cancelInteractiveTransition;
自定义文件:
#import <Foundation/Foundation.h> #import <UIKit/UIKit.h> typedef NS_ENUM(NSInteger, PresentType){ PresentTypePresent, PresentTypeDismiss }; @interface CustomTransform : NSObject<UIViewControllerAnimatedTransitioning> + (instancetype)makeWithTransitionType:(PresentType)type; - (instancetype)initWithTransitionType:(PresentType)type; @end