原文地址:http://hi.baidu.com/xiaxiatian111/item/b4cedd045415d0d1dce5b04d
ios常用的几个动画代码
使用前
需引入QuartzCore.framework, 并在相关文件中加入 #import "QuartzCore/QuartzCore.h"
定义
shakeFeedbackOverlay为UIImageView
设置
self.shakeFeedbackOverlay.alpha= 0.0;
self.shakeFeedbackOverlay.layer.cornerRadius= 10.0; //设置圆角半径
1、图像左右抖动
CABasicAnimation* shake = [CABasicAnimationanimationWithKeyPath:@"transform.rotation.z"];
shake.fromValue= [NSNumbernumberWithFloat:-M_PI/32];
shake.toValue= [NSNumbernumberWithFloat:+M_PI/32];
shake.duration= 0.1;
shake.autoreverses= YES; //是否重复
shake.repeatCount= 4;
[self.shakeFeedbackOverlay.layeraddAnimation:shakeforKey:@"shakeAnimation"];
self.shakeFeedbackOverlay.alpha= 1.0;
[UIViewanimateWithDuration:2.0delay:0.0options:UIViewAnimationOptionCurveEaseIn| UIViewAnimationOptionAllowUserInteractionanimations:^{ self.shakeFeedbackOverlay.alpha= 0.0; //透明度变0则消失 } completion:nil];
2、图像顺时针旋转
CABasicAnimation* shake = [CABasicAnimationanimationWithKeyPath:@"transform.rotation.z"];
shake.fromValue= [NSNumbernumberWithFloat:0];
shake.toValue= [NSNumbernumberWithFloat:2*M_PI];
shake.duration= 0.8; shake.autoreverses= NO;
shake.repeatCount= 1;
[self.shakeFeedbackOverlay.layeraddAnimation:shakeforKey:@"shakeAnimation"];
self.shakeFeedbackOverlay.alpha= 1.0;
[UIViewanimateWithDuration:10.0delay:0.0options:UIViewAnimationOptionCurveEaseIn| UIViewAnimationOptionAllowUserInteractionanimations:^{ self.shakeFeedbackOverlay.alpha= 0.0; }completion:nil];
3、图像关键帧动画
CAKeyframeAnimation*animation = [CAKeyframeAnimationanimation];
CGMutablePathRefaPath = 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.layeraddAnimation:animationforKey:@"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.layeraddAnimation:groupforKey:@"position"];
5、指定时间内旋转图片
//启动定时器旋转光圈
- (void)startRotate
{
self.rotateTimer= [NSTimerscheduledTimerWithTimeInterval:0.02
target:self
selector:@selector(rotateGraduation)
userInfo:nil
repeats:YES];
}
//关闭定时器
- (void)stopTimer
{
if([self.rotateTimerisValid])
{
[self.rotateTimerinvalidate];
self.rotateTimer=nil;
}
}
//旋转动画
- (void)rotateGraduation
{
self.timeCount--;
if(self.timeCount== 0)
{
[selfstopTimer];
// doSomeThing //旋转完毕 可以干点别的
self.timeCount= 25;
}
else
{
//计算角度 旋转
staticCGFloatradian = 150* (M_2_PI/ 360);
CGAffineTransformtransformTmp = self.lightImageView.transform;
transformTmp = CGAffineTransformRotate(transformTmp, radian);
self.lightImageView.transform= transformTmp;
};
}
调用方法
self.timeCount= 25; //动画执行25次
[selfstartRotate];