您的位置:首页 > 移动开发 > IOS开发

iOS动画技术——iOS 7自定义过渡动画

2015-08-28 22:34 411 查看

自定义过渡动画

1.iOS用户总是抱怨iOS视图过渡动画太少,但在iOS 7之后,这个问题已经不再是问题。因为iOS 7允许用户自定义视图过渡动画。

2.视图过渡,即视图之间的跳转,有两种情况:

树形结构导航,通过UINavigationController控制视图堆栈实现视图过渡模态导航,通过UIViewController控制实现的。

3.使用开源框架:HUAnmator, git地址:https://github.com/cinkster/HUAnimator

树形结构导航

UIViewControllerTransitioning:视图控制器过渡类

UINavigationController:导航控制器类

一。UIViewControllerTransitioning:视图控制器过渡类

1.包含的字符串常量:

UITransitionContextFromViewControllerKey:用于过渡上下文中,用于获得过渡前的视图控制器UITransitionContextToViewControllerKey:用于过渡上下文中,用于获得过渡后的视图控制器UITransitionContextFromViewKey:用于过渡上下文中,用于获得过渡前的视图UITransitionContextToViewKey:用于过渡上下文中,用于获得过渡后的视图

2.UIViewControllerAnimatedTransitioning:视图控制器动画过渡协议

应用:如果我们要自定义过渡动画,需要实现这个协议。

包含的方法:

必须实现的方法:
执行自定义动画:- (void)animateTransition:(id )transitionContext;
设置动画执行的时间:- (NSTimeInterval)transitionDuration:(id )transitionContext;
其中,参数UIViewControllerContextTransitioning类封装过渡动画的上下文对象,通过这个对象
我们可以获得过渡前后的视图控制器
UIViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];
UIViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];

可选方法:
动画结束的时候调用:- (void)animationEnded:(BOOL) transitionCompleted;

3.UIViewControllerContextTransitioning:视图控制器过渡上下文协议

用于获得过渡前后的视图控制器:- (UIViewController *)viewControllerForKey:(NSString *)key;
用于获得过渡前后的视图:- (UIView *)viewForKey:(NSString *)key;
其中,参数key为上面的4个字符串常量

二。UINavigationController:导航控制器类

1.UINavigationControllerDelegate:导航控制器委托

- (id )navigationController:(UINavigationController *)navigationController
animationControllerForOperation:(UINavigationControllerOperation)operation
fromViewController:(UIViewController *)fromVC
toViewController:(UIViewController *)toVC
其中:参数UINavigationControllerOperation包含三个常量:
UINavigationControllerOperationNone,
UINavigationControllerOperationPush,
UINavigationControllerOperationPop,


模态导航自定义过渡动画

模态导航自定过渡动画需要在视图控制中实现UIViewControllerTransitioningDelegate协议,它在UIViewControllerTransitioning类中定义,上面树形结构导航提到过
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: