标签:
1 // 创建帧动画对象(缩放bounds,平移position,旋转transform) 2 CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 3 // values是用来存放要执行的每一帧动画 4 NSValue *value1 = [NSValue valueWithCGPoint:CGPointZero]; 5 NSValue *value2 = [NSValue valueWithCGPoint:CGPointMake(300, 0)]; 6 NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake(300, 300)]; 7 NSValue *value4 = [NSValue valueWithCGPoint:CGPointMake(0, 300)]; 8 NSValue *value5 = [NSValue valueWithCGPoint:CGPointZero]; 9 anim.values = @[value1,value2,value3,value4,value5]; 10 11 // 设置每一帧执行的时间(注意:里面的每一个值取值范围是0到1,后面的值必须大于前面的值) 12 // 每一帧执行的时间 = (后一个时间点 - 前一个时间点) * 动画执行总时间 13 anim.keyTimes = @[@(0),@(0.2),@(0.5),@(0.7),@(1)]; 14 15 // 设置动画执行节奏(慢进满出,中间快) 16 // anim.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; 17 // 设置动画时间 18 anim.duration = 2.0f; 19 20 // 设置保存动画执行状态 21 anim.removedOnCompletion = NO; 22 anim.fillMode = kCAFillModeForwards; 23 // 把动画添加到图层上面 24 [self.redView.layer addAnimation:anim forKey:nil];
抖动图片
将角度转换弧度
#define angleRadian(angle) ((angle)* M_PI/ 180.0)
1 if ([self.iconView.layer animationForKey:@"animation"]){//如果动画进行中 2 // 停止动画 3 [self.iconView.layer removeAnimationForKey:@"animation"]; 4 return; 5 } 6 // 创建动画对象 7 CAKeyframeAnimation *keyframe = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"]; 8 9 keyframe.values = @[@(-angleRadian(3)),@(angleRadian(3)), @(-angleRadian(3))]; 10 11 // 设置代理 12 keyframe.delegate = self; 13 14 // 设置动画时间 15 keyframe.duration = 0.2f; 16 // 设置动画执行次数 17 keyframe.repeatCount = MAXFLOAT; 18 19 // 把动画添加到头像上 20 [self.iconView.layer addAnimation:keyframe forKey:@"animation"];
#pragma mark - 动画代理方法
- (void)animationDidStart:(CAAnimation *)anim {
NSLog(@"animationDidStart");
}
- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag {
NSLog(@"animationDidStop");
}
CAKeyframeAnimation常用属性 and 如何抖动view
标签:
原文地址:http://www.cnblogs.com/neilHoIOS/p/4628462.html