在ios开发中一般用到的基础动画有以下几种,所有的动画参数配置大致相同,但是有时候在开发过程中很少这样配置一般使用代码块比较方便,而且代码也比较简单以下是常用基础动画类型的一个配置
#pragma mark -- Action methods
- (void)transitionAnimation// 转场动画
{
//设置动画名称,方便代理方法判断是哪个动画
[UIView beginAnimations:@"TransitionAnimation" context:NULL];
//设置动画时长
[UIView setAnimationDuration:3.0];
//设置动画的变化规律 --有以下4中枚举值
// UIViewAnimationCurveEaseInOut, 开始和结束减速 // slow at beginning and end
// UIViewAnimationCurveEaseIn, // slow at beginning
// UIViewAnimationCurveEaseOut, // slow at end
// UIViewAnimationCurveLinear 匀速
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
// 对View设置转场动画方向 有以下枚举方向
// typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
// UIViewAnimationTransitionNone,
// UIViewAnimationTransitionFlipFromLeft,
// UIViewAnimationTransitionFlipFromRight,
// UIViewAnimationTransitionCurlUp,
// UIViewAnimationTransitionCurlDown,
// };
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:_view cache:NO];
// 对View设置初始状态 并对其他进行配置(这里只是让View变成之前的参数而已,如果不需要就可以去掉这段代码)
[_view setTransform:CGAffineTransformIdentity];
[_view setBackgroundColor:[UIColor blackColor]];
[_view setAlpha:1];
[_view setCenter:CGPointMake(50, 50)];
// 设置代理
[UIView setAnimationDelegate:self];
// 动画结束执行代理方法(这里走得时代理方法也可以走其他动画方法就可以形成动画组)
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
//动画结束
[UIView commitAnimations];
}
- (void)changeAlphaAnimation //改变透明度动画
{
[UIView beginAnimations:@"ChangeAlphaAnimation" context:NULL];
[UIView setAnimationDuration:2.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[_view setAlpha:0.2];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
[UIView commitAnimations];
}
- (void)changeColorAnimation // 改变颜色动画
{
[UIView beginAnimations:@"ChangeColorAnimation" context:NULL];
[UIView setAnimationDuration:2.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[_view setBackgroundColor:[UIColor redColor]];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
[UIView commitAnimations];
}
- (void)rotationAnimation // 旋转动画
{
[UIView beginAnimations:@"RotationAnimation" context:NULL];
[UIView setAnimationDuration:2.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[_view setTransform:CGAffineTransformRotate(_view.transform, M_PI_4)];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(changeColorAnimation)];
[UIView commitAnimations];
}
- (void)scareAnimation //放大缩小动画
{
[UIView beginAnimations:@"ScareAnimation" context:NULL];
[UIView setAnimationDuration:2.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDelegate:self];
[_view setTransform:CGAffineTransformScale(_view.transform, 2, 2)];
[UIView setAnimationDidStopSelector:@selector(rotationAnimation)];
[UIView commitAnimations];
}
- (void)positionAnimation //位移动画
{
[UIView beginAnimations:@"PositionAnition" context:NULL];
[UIView setAnimationDuration:2.0];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDelegate:self];
_view.center = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds));
[UIView setAnimationDidStopSelector:@selector(scareAnimation)];
[UIView commitAnimations];
}
// 代理方法,检测动画介绍然后进行其他操作 还有其他两个方法
- (void)animationDidStop:(NSString *)animationId finished:(NSNumber *)finished context:(void *)context
{
// 判断是哪个动画 然后执行相应操作
if ([animationId isEqualToString:@"ChangeColorAnimation"]) {
[self changeAlphaAnimation];
}
if ([animationId isEqualToString:@"ChangeAlphaAnimation"]) {
[self transitionAnimation];
}
}
<pre name="code" class="objc">[UIView animateWithDuration:0.5 animations:^{
[UIView setAnimationDelay:0.8];//配置动画时延
_currentView.center = CGPointMake(X,Y);//可以对多个view进行我们想要的动画配置
newView.center = CGPointMake(X,Y);
} completion:^(BOOL finished) {
//执行完后走这里的代码块
}];