IOS视图控制器自定义动画效果
2014-11-30 12:19
477 查看
(1)这里的动画效果指的是界面切换的动画效果,我们常见的又淡入淡出,右出左进等等,当然还有一些高级动画,这种动画适合游戏类的,对于一般APP会显得太花哨。(2)我们在此处没有增加任何框架(QuartzCore)也没有导入什么头文件(QuartzCore.h),就可以直接用CATransiton(相当于是CAAnimation的子类)来创建一个对象,如animation1。(3)创建完之后我们就对这个动画对象进行动画设置,这里面主要是涉及到type属性,而且值有两种:一种是调用系统自带的一些效果,kCATransition开头的,如animation1.type=kCATransitionPush、kCATransitionMoveIn、kCATransitionFade等;另一种是传入名称的方法,这个名称也是内置的吧,在某一个库里吧(难道就是在QuartzCore.h里?),不管那么多,反正是可以直接用@“ ”来赋值即可,比如animation.type=@"cube"、@“pageCurl”、@“rippleEffect”等。(4)当然,最重要的时我们这些动画效果都是在导航控制器视图的layer层上的,所以要显示这个动画,得把它加载进去,即直接赋值即可,如[self.navigationController.view.layer addAnimation:animation1 forKey:nil];(5)还有个次重要的,就是得关闭我们系统默认的动画,[self.navigationController popViewControllerAnimated:NO];也就是设置为NO即可,防止出现怪异的动画叠加。我们依然是在导航控制器中说的这个事儿,所以当然我们需要创建2个视图控制器放到导航控制器中,用于界面跳转(切换)时用。这个是根试图控制器ViewController.m文件,核心部分比较简单,三个步骤。
#import "ViewController.h" #import "SecondViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { UIButton *btn1=[UIButton buttonWithType:UIButtonTypeRoundedRect]; btn1.backgroundColor=[UIColor whiteColor]; btn1.frame=CGRectMake(38, 80, 300, 30); [btn1 setTitle:@"JUMP TO SECOND" forState:UIControlStateNormal]; [btn1 addTarget:self action:@selector(jumpTo) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn1]; [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } -(void)jumpTo{ SecondViewController *second1=[[SecondViewController alloc]init]; //简单三步(1)实例化一个转化动画对象animation2(2)设置一个动画pageCurl(3)把这个动画对象加载到导航控制器视图的layer层上 CATransition *animation2=[CATransition animation]; animation2.type=@"oglFlip"; [self.navigationController.view.layer addAnimation:animation2 forKey:nil]; //当然,我们需要关闭默认的动画,虽然有些动画不受影响,但有的会和默认动画叠加 [self.navigationController pushViewController:second1 animated:NO]; }@end下面这个是子页面的SecondViewController.m的文件:
#import "SecondViewController.h"@interface SecondViewController ()@end@implementation SecondViewController - (void)viewDidLoad { // UIBarButtonItem *barBtn1=[[UIBarButtonItem alloc]initWithTitle:@"回家" style:UIBarButtonItemStylePlain target:self action:@selector(backTo)]; self.navigationItem.leftBarButtonItem=barBtn1; self.view.backgroundColor=[UIColor purpleColor]; [super viewDidLoad]; // Do any additional setup after loading the view.} -(void)backTo{ //默认的动画效果是:从右向左出来,从左向右回去 //不论哪种方法,先创建一个切换对象即CATransition对象 CATransition *animation1=[CATransition animation]; //然后设置切换的时间,即动画的时间 animation1.duration=1; //下面是重头戏,有好几种方法设置动画的类型 //第一种是:用默认的type和subtype来设置系统自带的,有7、8种简单基本的,但貌似subtype依然失效了,总之,用type来设置系统自带的8种足够 //从上下左右出现,以及Fade、MoveIn、Push、Reveal等8种简单的 animation1.type=kCATransition; animation1.subtype=kCATransitionPush; //第二种方式,直接用名字来定义,难道这个需要QuartzCore框架支持么?xcode6貌似已经配置了,不需要导入任何头文件,而且这个效果会覆盖上面第一种用到得8中默认简单动画 //如cube、rippleEffect、suckEffect、oglFlip、pageCurl、pageUnCurl animation1.type=@"oglFlip"; //设置完动画后,就是设置动画的时机,也就是显示和退出效果比如淡入淡出等等 //貌似没有什么效果,而且还是可以省略不写的 [animation1 setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]]; //最重要的一步,是把这个动画加载到导航控制器的view的layer层 [self.navigationController.view.layer addAnimation:animation1 forKey:nil]; //把默认的动画关闭,虽然有些动画不受影响,但有的会和默认动画叠加 [self.navigationController popViewControllerAnimated:NO]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. }@end
相关文章推荐
- iOS开发导航控制器下不同视图控制器之间切换:利用CATrasition和view的layer层来实现自定义的动画效果
- 【iOS开发-24】导航控制器下不同视图控制器之间切换:利用CATrasition和view的layer层来实现自定义的动画效果
- 翻译:iOS视图控制器编程指南(十)——自定义过渡动画(Customizing the Transition Animations)
- iOS 视图控制器转场动画/页面切换效果/跳转动画 学习
- iOS 比例 缩放视图 视图动画效果 CGAffineTransformMakeScale
- 【IOS动画】视图左右抖动动画效果
- iOS 模态视图和导航栏自定义切换动画与交互动画
- 自定义视图控制器切换(iOS)
- iOS利用Runtime自定义控制器POP手势动画
- iOS开发笔记--视图切换的动画效果
- IOS视图切换动画效果<代码演示>
- ios 视图切换动画效果
- iOS学习之自定义弹出UIPickerView或UIDatePicker(动画效果)
- IOS自定义导航栏Push动画效果
- iOS利用Runtime自定义控制器POP手势动画
- ios旋转视图 视图动画效果CGAffineTransformRotate
- ios 视图切换动画效果
- iOS学习之自定义弹出UIPickerView或UIDatePicker(动画效果)
- ios常用16种视图切换动画效果
- IOS视图缩放显示动画效果