ios 动画效果CATransition笔记

时间:2021-07-23 00:15:50

初学ios开发,很多概念还不清楚,所以只有边学边做例子。又怕学了后面忘了前面,因此用自己的博客来纪录自己的学习历程,也是对自己学习不要懈怠做个监督。

刚学ios做动画效果。因为ios封装得很好,实现ios的漂亮动画效果也很简单,却因为我自己的粗心落了一个字母 导致纠结了一天,这个教训必须记住,同时也懂得了调试技能在编程里地位也是非常重要的存在。

实现ios动画有两种方法:一种UIView层面的,一种是使用CATransition.

  1. - (void)viewDidLoad
  2. {
  3. [super viewDidLoad];
  4. // Do any additional setup after loading the view.
  5. UIView *redView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  6. redView.backgroundColor = [UIColor redColor];
  7. [self.view addSubview:redView];
  8. UIView *yellowView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
  9. yellowView.backgroundColor = [UIColor yellowColor];
  10. [self.view addSubview:yellowView];
  11. UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  12. [button setTitle:@"改变1" forState:UIControlStateNormal];
  13. button.frame = CGRectMake(10, 10, 300, 40);
  14. [button addTarget:self action:@selector(changeUIView1) forControlEvents:UIControlEventTouchUpInside];
  15. [self.view addSubview:button];
  16. UIButton *button2 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  17. [button2 setTitle:@"改变2" forState:UIControlStateNormal];
  18. button2.frame = CGRectMake(10, 120, 300, 40);
  19. [button2 addTarget:self action:@selector(changeUIView2) forControlEvents:UIControlEventTouchUpInside];
  20. [self.view addSubview:button2];
  21. }
  22. -(void) changeUIView1{
  23. [UIView beginAnimations:@"animation" context:nil];
  24. [UIView setAnimationDuration:1.0f];
  25. [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
  26. [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];
  27. [self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0  ];
  28. [UIView commitAnimations];
  29. }
  30. -(void) changeUIView2{
  31. CATransition *transition = [CATransition animation];
  32. transition.delegate = self;
  33. transition.duration = 2.0f;
  34. transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
  35. transition.type = kCATransitionPush;
  36. transition.type = @"pageCurl"  ;//另一种设置动画效果方法
  37. transition.subtype = kCATransitionFromBottom;
  38. [self.view exchangeSubviewAtIndex:1 withSubviewAtIndex:0];
  39. [self.view.layer addAnimation:transition forKey:@"animation"];
  40. }

调用CATransition需要在frameworks中添加QuartzCore.framework,在.h文件中加入  #import <QuartzCore/QuartzCore.h>

setType:有四种类型:

kCATransitionFade                   //交叉淡化过渡

kCATransitionMoveIn               //移动覆盖原图

kCATransitionPush                    //新视图将旧视图推出去

kCATransitionReveal                //底部显出来

另一种设置方法

pageCurl     //向上翻一页

pageUnCurl   //向下翻一页

rippleEffect   //滴水效果

suckEffect     //收缩效果,如一块布被抽走

cube       //立方体效果

oglFlip      //上下翻转效果

setSubtype:有四种类型:

kCATransitionFromRight;

kCATransitionFromLeft(默认值)

kCATransitionFromTop;

kCATransitionFromBottom