简单的动画: 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
过场动画
时间: 2024-10-24 04:37:41