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

iOS CALayer 抖动效果

2015-06-25 11:54 579 查看
方式一

- (void)shakeAnimationForView:(UIView *)view
{
CALayer *layer = [view layer];
CAKeyframeAnimation *animation = [CAKeyframeAnimation animation];
animation.keyPath = @"position.x";
animation.values = @[ @0, @5, @10, @-10, @10, @5, @0 ];
animation.keyTimes = @[ @0, @(1 / 6.0),@(2 / 6.0), @(3 / 6.0), @(5 / 6.0),@(2 / 6.0), @1 ];
animation.duration = 0.4;

animation.additive = YES;

[layer addAnimation:animation forKey:@"shake"];
}


方式二

- (void)shakeAnimationForView:(UIView *) view

{
//获取到当前View的layer
CALayer *viewLayer = view.layer;

//获取当前View的位置
CGPoint position = viewLayer.position;

//移动的两个终点位置
CGFloat scale = 5.0f;
CGPoint beginPosition = CGPointMake(position.x + scale, position.y);
CGPoint endPosition = CGPointMake(position.x - scale, position.y);

//设置动画
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];

//设置运动形式
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];

//设置开始位置
[animation setFromValue:[NSValue valueWithCGPoint:beginPosition]];

//设置结束位置
[animation setToValue:[NSValue valueWithCGPoint:endPosition]];

//设置自动反转
[animation setAutoreverses:YES];

//设置时间
[animation setDuration:0.1];

//设置次数
[animation setRepeatCount:3];

//添加上动画
[viewLayer addAnimation:animation forKey:nil];

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: