您的位置:首页 > 移动开发 > IOS开发

iOS常用动画代码

2016-04-11 15:10 459 查看
使用前

需引入QuartzCore.framework, 并在相关文件中加入 #import "QuartzCore/QuartzCore.h"

定义

shakeFeedbackOverlay为UIImageView

设置

self.shakeFeedbackOverlay.alpha = 0.0;

self.shakeFeedbackOverlay.layer.cornerRadius = 10.0; //设置圆角半径

1、图像左右抖动

CABasicAnimation* shake = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];

shake.fromValue = [NSNumber numberWithFloat:-M_PI/32];

shake.toValue = [NSNumber numberWithFloat:+M_PI/32];

shake.duration = 0.1;

shake.autoreverses = YES; //是否重复

shake.repeatCount = 4;

[self.shakeFeedbackOverlay.layer addAnimation:shake forKey:@"shakeAnimation"];

self.shakeFeedbackOverlay.alpha = 1.0;

[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{ self.shakeFeedbackOverlay.alpha = 0.0; //透明度变0则消失 } completion:nil];

摇晃动画2:

  {

CAKeyframeAnimation *frame=[CAKeyframeAnimation animation];

CGFloat left=-M_PI_2*0.125;

CGFloat right=M_PI_2*0.125;

frame.keyPath=@"postion";

frame.keyPath=@"transform.rotation";

frame.values=@[@(left),@(right),@(left)];

frame.duration = 0.5;

frame.repeatCount = 1000000;

[cell.layer addAnimation:frame forKey:nil];



2、图像顺时针旋转

CABasicAnimation* shake = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];

shake.fromValue = [NSNumber numberWithFloat:0];

shake.toValue = [NSNumber numberWithFloat:2*M_PI];

shake.duration = 0.8; shake.autoreverses = NO;

shake.repeatCount = 1;

[self.shakeFeedbackOverlay.layer addAnimation:shake forKey:@"shakeAnimation"];

self.shakeFeedbackOverlay.alpha = 1.0;

[UIView animateWithDuration:10.0 delay:0.0 options:UIViewAnimationOptionCurveEaseIn | UIViewAnimationOptionAllowUserInteraction animations:^{ self.shakeFeedbackOverlay.alpha = 0.0; } completion:nil];

3、图像关键帧动画

CAKeyframeAnimation *animation = [CAKeyframeAnimationanimation];

CGMutablePathRef aPath = CGPathCreateMutable();

CGPathMoveToPoint(aPath, nil, 20, 20);

CGPathAddCurveToPoint(aPath, nil, 160, 30, 220, 220, 240, 420);

animation.path = aPath;

animation.autoreverses = YES;

animation.duration = 2;

animation.timingFunction = [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseOut];

animation.rotationMode = @"auto";

[ballView.layer addAnimation:animation forKey:@"position"];

4、组合动画 CAAnimationGroup

CABasicAnimation *flip = [CABasicAnimationanimationWithKeyPath:@"transform.rotation.y"];

flip.toValue = [NSNumbernumberWithDouble:-M_PI];

CABasicAnimation *scale= [CABasicAnimationanimationWithKeyPath:@"transform.scale"];

scale.toValue = [NSNumbernumberWithDouble:12];

scale.duration = 1.5;

scale.autoreverses = YES;

CAAnimationGroup *group = [CAAnimationGroupanimation];

group.animations = [NSArrayarrayWithObjects:flip, scale, nil];

group.timingFunction = [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];

group.duration = 3;

group.fillMode = kCAFillModeForwards;

group.removedOnCompletion = NO;

[ballView.layer addAnimation:group forKey:@"position"];

5、指定时间内旋转图片

//启动定时器 旋转光圈

- (void)startRotate

{

self.rotateTimer = [NSTimer scheduledTimerWithTimeInterval:0.02 target:self selector:@selector(rotateGraduation) userInfo:nil repeats:YES];

}

//关闭定时器

- (void)stopTimer

{

if ([self.rotateTimer isValid])

{

[self.rotateTimer invalidate]; self.rotateTimer = nil;

}

}

//旋转动画

- (void)rotateGraduation

{

self.timeCount--;

if (self.timeCount == 0)

{

[self stopTimer];

// doSomeThing //旋转完毕 可以干点别的

self.timeCount = 25;

}

else

{

//计算角度 旋转

static CGFloat radian = 150 * (M_2_PI / 360);

CGAffineTransform transformTmp = self.lightImageView.transform;

transformTmp = CGAffineTransformRotate(transformTmp, radian);

self.lightImageView.transform = transformTmp;

};

}

调用方法

self.timeCount = 25; //动画执行25次

[self startRotate];


转载自:http://www.cnblogs.com/sell/archive/2013/02/01/2889013.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: