一、基础动画:
(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];
(4)、options:
/*
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参数设置,设置此参数后转出的视图会隐藏(不会移除)转入后再显示。