自定义转场动画 pop动画
2016-07-18 16:46
253 查看
参考例子:https://github.com/zys456465111/CustomPopAnimation
在写pop动画时如果要做出和系统相似的动画
需要 注意添加红色字体部分的代码
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
/**
* 获取动画来自的那个控制器
*/
UIViewController *fromViewController = [transitionContextviewControllerForKey:UITransitionContextFromViewControllerKey];
/**
* 获取转场到的那个控制器
*/
UIViewController *toViewController = [transitionContextviewControllerForKey:UITransitionContextToViewControllerKey];
/**
* 转场动画是两个控制器视图时间的动画,需要一个containerView来作为一个“舞台”,让动画执行。
*/
UIView *containerView = [transitionContextcontainerView];
[containerView insertSubview:toViewController.viewbelowSubview:fromViewController.view];
toViewController.view.transform =CGAffineTransformMakeTranslation(-[UIScreenmainScreen].bounds.size.width+300,0);
NSTimeInterval duration = [selftransitionDuration:transitionContext];
/**
* 执行动画,我们让fromVC的视图移动到屏幕最右侧
*/
[UIViewanimateWithDuration:durationanimations:^{
fromViewController.view.transform =CGAffineTransformMakeTranslation([UIScreenmainScreen].bounds.size.width,0);
toViewController.view.transform =CGAffineTransformIdentity;
}completion:^(BOOL finished) {
/**
* 当你的动画执行完成,这个方法必须要调用,否则系统会认为你的其余任何操作都在动画执行过程中。
*/
[transitionContext completeTransition:transitionContext.transitionWasCancelled];
}];
}
在写pop动画时如果要做出和系统相似的动画
需要 注意添加红色字体部分的代码
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
{
/**
* 获取动画来自的那个控制器
*/
UIViewController *fromViewController = [transitionContextviewControllerForKey:UITransitionContextFromViewControllerKey];
/**
* 获取转场到的那个控制器
*/
UIViewController *toViewController = [transitionContextviewControllerForKey:UITransitionContextToViewControllerKey];
/**
* 转场动画是两个控制器视图时间的动画,需要一个containerView来作为一个“舞台”,让动画执行。
*/
UIView *containerView = [transitionContextcontainerView];
[containerView insertSubview:toViewController.viewbelowSubview:fromViewController.view];
toViewController.view.transform =CGAffineTransformMakeTranslation(-[UIScreenmainScreen].bounds.size.width+300,0);
NSTimeInterval duration = [selftransitionDuration:transitionContext];
/**
* 执行动画,我们让fromVC的视图移动到屏幕最右侧
*/
[UIViewanimateWithDuration:durationanimations:^{
fromViewController.view.transform =CGAffineTransformMakeTranslation([UIScreenmainScreen].bounds.size.width,0);
toViewController.view.transform =CGAffineTransformIdentity;
}completion:^(BOOL finished) {
/**
* 当你的动画执行完成,这个方法必须要调用,否则系统会认为你的其余任何操作都在动画执行过程中。
*/
[transitionContext completeTransition:transitionContext.transitionWasCancelled];
}];
}
相关文章推荐
- CentOS6.4安装Apache+MySQL+PHP
- opencv hog特征头文件
- Demo_java_linux环境下编辑简易JAVA程序
- [Linux] MODULE_DEVICE_TABLE
- PowerShell匹配文件删除N天前或指定日期(前后)创建(或修改)的文件
- 发现一个很棒的网站,技术 + 音乐 + 其他一切
- 对Linux 网卡软中断做负载均衡
- Linux svn服务器端搭建过程
- 企业级云应用平台的实践和思考
- linux下找出文件中字符串出现次数的2种方法
- 关于字符驱动设备的一些概念理解
- 统计网站的每日访问量
- [Headset]如何在ADB shell中读取耳机状态和读取ACCDET寄存器
- Nginx/LVS/HAProxy负载均衡软件的优缺点
- Linux下chkconfig命令详解即添加服务以及两种方式启动关闭系统服务
- linux主从复制搭建
- Linux(Ubuntu)安装并破解 SecureFX
- Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart
- Centos 6.7下图文讲解最新zabbix3.0.3源码安装过程
- linux安装缺失服务