一、基础动画:
(1)、Block方式:
[UIView animateWithDuration:3.0 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ _imgView.center=location; } completion:^(BOOL finished) { NSLog(@"Animation.end"); }];
(2)、静态方式:
//方法2:静态方法: [UIView beginAnimations:@"KCBasicAnimation" context:nil]; [UIView setAnimationDuration:3.0]; [UIView setAnimationDelay:1.0];//设置延迟 [UIView setAnimationRepeatAutoreverses:NO];//是否回复 [UIView setAnimationRepeatCount:10];//重复次数 [UIView setAnimationStartDate:(NSDate *)];//设置动画开始运行的时间 [UIView setAnimationDelegate:self];//设置代理 [UIView setAnimationWillStartSelector:(SEL)];//设置动画开始运动的执行方法 [UIView setAnimationDidStopSelector:(SEL)];//设置动画运行结束后的执行方法 _imgView.center=location; //开始动画 [UIView commitAnimations];(3)、新增弹簧效果动画:
[UIView animateWithDuration:5.0 delay:0 usingSpringWithDamping:0.1 initialSpringVelocity:1.0 options:UIViewAnimationOptionOverrideInheritedCurve animations:^{ _imgView.center=location; } completion:nil];
/* 1.常规动画属性设置(可以同时选择多个进行设置) UIViewAnimationOptionLayoutSubviews:动画过程中保证子视图跟随运动。 UIViewAnimationOptionAllowUserInteraction:动画过程中允许用户交互。 UIViewAnimationOptionBeginFromCurrentState:所有视图从当前状态开始运行。 UIViewAnimationOptionRepeat:重复运行动画。 UIViewAnimationOptionAutoreverse :动画运行到结束点后仍然以动画方式回到初始点。 UIViewAnimationOptionOverrideInheritedDuration:忽略嵌套动画时间设置。 UIViewAnimationOptionOverrideInheritedCurve:忽略嵌套动画速度设置。 UIViewAnimationOptionAllowAnimatedContent:动画过程中重绘视图(注意仅仅适用于转场动画)。 UIViewAnimationOptionShowHideTransitionViews:视图切换时直接隐藏旧视图、显示新视图,而不是将旧视图从父视图移除(仅仅适用于转场动画) UIViewAnimationOptionOverrideInheritedOptions :不继承父动画设置或动画类型。 2.动画速度控制(可从其中选择一个设置) UIViewAnimationOptionCurveEaseInOut:动画先缓慢,然后逐渐加速。 UIViewAnimationOptionCurveEaseIn :动画逐渐变慢。 UIViewAnimationOptionCurveEaseOut:动画逐渐加速。 UIViewAnimationOptionCurveLinear :动画匀速执行,默认值。 3.转场类型(仅适用于转场动画设置,可以从中选择一个进行设置,基本动画、关键帧动画不需要设置) UIViewAnimationOptionTransitionNone:没有转场动画效果。 UIViewAnimationOptionTransitionFlipFromLeft :从左侧翻转效果。 UIViewAnimationOptionTransitionFlipFromRight:从右侧翻转效果。 UIViewAnimationOptionTransitionCurlUp:向后翻页的动画过渡效果。 UIViewAnimationOptionTransitionCurlDown :向前翻页的动画过渡效果。 UIViewAnimationOptionTransitionCrossDissolve:旧视图溶解消失显示下一个新视图的效果。 UIViewAnimationOptionTransitionFlipFromTop :从上方翻转效果。 UIViewAnimationOptionTransitionFlipFromBottom:从底部翻转效果。 */
//关键帧动画 [UIView animateKeyframesWithDuration:5.0 delay:0 options:UIViewAnimationOptionCurveLinear|UIViewAnimationOptionCurveLinear animations:^{ [UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:0.5 animations:^{ _imgView.center=CGPointMake(80.0, 220.0); }]; [UIView addKeyframeWithRelativeStartTime:0.5 relativeDuration:0.25 animations:^{ _imgView.center=CGPointMake(45.0, 300.0); }]; [UIView addKeyframeWithRelativeStartTime:0.75 relativeDuration:0.25 animations:^{ _imgView.center=CGPointMake(55.0, 400); }]; } completion:^(BOOL finished) { NSLog(@"Animation end."); }];
[UIView transitionWithView:_imgView duration:1.0 options:UIViewAnimationOptionCurveLinear|UIViewAnimationOptionTransitionFlipFromLeft animations:^{ _imgView.backgroundColor=[UIColor colorWithRed:arc4random()%255/255.0 green:arc4random()%255/255.0 blue:arc4random()%255/255.0 alpha:1]; } completion:nil];如果有两个完全不同的视图,并且每个视图布局都很复杂,此时要在这两个视图之间进行转场可以使用+ (void)transitionFromView:(UIView *)fromView toView:(UIView *)toView duration:(NSTimeInterval)duration options:(UIViewAnimationOptions)options completion:(void (^)(BOOL finished))completion NS_AVAILABLE_IOS(4_0)方法进行两个视图间的转场,需要注意的是默认情况下转出的视图会从父视图移除,转入后重新添加,可以通过UIViewAnimationOptionShowHideTransitionViews参数设置,设置此参数后转出的视图会隐藏(不会移除)转入后再显示。
原文地址:http://blog.csdn.net/chaofangong/article/details/42678845