这个方法很简单,直接传入需要抖动的视图就可以实现传入的视图抖动了
-(void)shake:(UIView *)shakeView
{
// @"position" 这个 key 不能为空,position,是一个属性
CAKeyframeAnimation *animationKey = [CAKeyframeAnimation animationWithKeyPath:@"position"];
// 设置 animationKey 持续时间
// [animationKey setDuration:0.5f];// set语法
animationKey.duration = 0.5f;// .语法
// animationKey 的 value 数组 NSValue 型
NSArray *valueArray = [[NSArray alloc]initWithObjects:[NSValue valueWithCGPoint:CGPointMake(self.view.center.x, self.view.center.y)],[NSValue valueWithCGPoint:CGPointMake(self.view.center.x-5, self.view.center.y)],[NSValue valueWithCGPoint:CGPointMake(self.view.center.x+5, self.view.center.y)],[NSValue valueWithCGPoint:CGPointMake(self.view.center.x, self.view.center.y)], [NSValue valueWithCGPoint:CGPointMake(self.view.center.x-5, self.view.center.y)],[NSValue valueWithCGPoint:CGPointMake(self.view.center.x+5, self.view.center.y)],[NSValue valueWithCGPoint:CGPointMake(self.view.center.x, self.view.center.y)],[NSValue valueWithCGPoint:CGPointMake(self.view.center.x-5, self.view.center.y)],[NSValue valueWithCGPoint:CGPointMake(self.view.center.x+5, self.view.center.y)],[NSValue valueWithCGPoint:CGPointMake(self.view.center.x, self.view.center.y)],nil];
[animationKey setValues:valueArray];
// animationKey 的时间数组 NSNumber 类型
NSArray *timeArray = [ [NSArray alloc]initWithObjects:[NSNumber numberWithFloat:0.1f],[NSNumber numberWithFloat:0.2f],[NSNumber numberWithFloat:0.3f],[NSNumber numberWithFloat:0.4f],[NSNumber numberWithFloat:0.5f],[NSNumber numberWithFloat:0.6f], [NSNumber numberWithFloat:0.7f],[NSNumber numberWithFloat:0.8f],[NSNumber numberWithFloat:0.9f],[NSNumber numberWithFloat:1.0f],nil];
[animationKey setKeyTimes:timeArray];
// 把 animationKey 添加在 bgView 上
[shakeView.layer addAnimation:animationKey forKey:nil];
}
也可以根据自己的需要把上面的数值加以修改,得到不一样的效果,