过场动画

简单的动画:
Core Animation是SDK四层结构中的第二层Media层中的重要组成部分,Quartz在这一层,而Core Animation位于Quartz之上,与Quartz的C语言函数库不同,它是基于Quartz的Objective-C封装。
所有的视图UIView 都有一个layer属性,即是CALayer对象,CALayer是Core Animation的基础。所有的Core Animation 动画都是基于CALayer的。CALayer的属性有(anchorPoint,backgroundColor,opacity,position,transform)
Core Animation 有两种动画类型:隐式动画 和显式动画
1.隐式动画(不需要显式的创建CABasicAnimation或CAAnimation对象)只需要在“动画块”中修改CALayer的属性:
(1)一个最简单示例
  [UIView beginAnimations:nil context:NULL];//1.标志“动画快"的开始
    CGAffineTransform moveTransform = CGAffineTransformMakeTranslation(200, 200);//2.创建一个放射变换对象。
    [self.baseView.layer setAffineTransform:moveTransform];//3.修改CALayer的transform属性
    self.baseView.layer.opacity = 1;//修改CALayer的opacity属性(动画效果是渐变)
    [UIView setAnimationDuration:1.0f];//4.设置动画持续时间,
    [UIView commitAnimations];//5.动画快结束标志,2)再给一个示例:这个例子是使用Block块,其中添加动画方法。
[UIView animateWithDuration:0.5 animations:^{
       [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.window cache:NO];
        } completion:^(BOOL finished) {
      [_loadImgView removeFromSuperview];
  }];
(3)再来一个,这个实现程序退出,并结合了两个的功能中使用到的方法
#pragma mark - 退出程序动画操作
-(void)exitApplication{
    [UIView beginAnimations:@"exitApplication" context:nil];
    [UIView setAnimationDuration:0.5];
    [UIView setAnimationDelegate:self];
    UIWindow *win = [[UIApplication sharedApplication].windows objectAtIndex:0];
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:win cache:NO];
    [UIView setAnimationDidStopSelector:@selector(animationFinished:finished:context:)];
    win.bounds = CGRectMake(0, 0, 0, 0);
    [UIView commitAnimations];
}
-(void)animationFinished:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context{
    if ([animationID compare:@"exitApplication"]==0) {
        exit(0);
    }
}
2.显式动画(需要显式地定义一个CABasicAnimation或CAAnimation对象来执行动画,其中有CABasicAnimation:CAPropertyAnimation,而CAPropertyAnimation:CAAnimation,CATransition:CAAnimation)
CATransition* transition = [CATransition animation];
    transition.duration = 0.5;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush; //kCATransitionMoveIn; //, kCATransitionPush, kCATransitionReveal, kCATransitionFade//动画类型设置
    transition.subtype = kCATransitionFromTop; //kCATransitionFromLeft, kCATransitionFromRight, kCATransitionFromTop, kCATransitionFromBottom//动画开始点设置,动画开始方向设置。
    [self.navigationController.view.layer addAnimation:transition forKey:nil];
    [self.navigationController pushViewController:vc animated:NO];
以上动画都是过场性的,也就是说不是连续的持久的动画,能够满足页面跳转,界面显示等常见的功能,这部分的参考文档可以查看链接:http://www.open-open.com/lib/view/open1372152939072.html
原文地址:https://www.cnblogs.com/longtaozi/p/3843829.html