文末有彩蛋。
想实现一个这样的动画:
废话不多说,直接上代码。
第一步:创建视图。
UIButton *button = [[UIButton alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
button.backgroundColor = [UIColor redColor];
[button addTarget:self action:@selector(shakeAnimationForView:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:button];
第二步:写动画。
- (void)shakeAnimationForView:(UIView *) view
{
//获取到当前View的layer
CALayer *viewLayer = view.layer;
//获取当前View的位置
CGPoint position = viewLayer.position;
//移动的两个终点位置
CGPoint beginPosition = CGPointMake(position.x + 10, position.y);
CGPoint endPosition = CGPointMake(position.x - 10, 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:.06];
//设置次数
[animation setRepeatCount:3];
//添加上动画
[viewLayer addAnimation:animation forKey:nil];
}
搞定。
彩蛋:KenshinCui大神的动画入门,写的非常简单易懂。看完从此对iOS动画挺直腰杆走路。