CABaseAnimation 常用方法
(void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.self.testView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];
self.testView.backgroundColor = [UIColor redColor];
[self.view addSubview:self.testView];
}
-(void)translation
{
CABasicAnimation *baseAnn = [CABasicAnimation animationWithKeyPath:@”transform.translation.x”];
//设置开始状态
baseAnn.fromValue = @(0);
baseAnn.duration = 2.0f;
baseAnn.toValue = @(300);
//按照原来的路径返回
baseAnn.autoreverses = YES;
//设置重复的次数
baseAnn.repeatCount = MAXFLOAT;
[self.testView.layer addAnimation:baseAnn forKey:@"key"];
}
-(void)back
{
CABasicAnimation *baseAnn = [CABasicAnimation animationWithKeyPath:@”backgroundColor”];
//设置开始状态
baseAnn.duration = 2.0f;
baseAnn.toValue = (id)[UIColor greenColor].CGColor;
//动画结束的时候 不移除动画
baseAnn.removedOnCompletion = NO;
//kCAFillModeBackwards 返回到之前的状态
//kCAFillModeForwards 保持当前状态
baseAnn.fillMode = kCAFillModeBackwards;
[self.testView.layer addAnimation:baseAnn forKey:@"key"];
}
-(void)cornerRadius
{
CABasicAnimation *baseAnn = [CABasicAnimation animationWithKeyPath:@”cornerRadius”];
//设置开始状态
baseAnn.fromValue = @(0);
baseAnn.duration = 2.0f;
baseAnn.toValue = @(50);
//按照原来的路径返回
baseAnn.autoreverses = YES;
//设置重复的次数
baseAnn.repeatCount = MAXFLOAT;
[self.testView.layer addAnimation:baseAnn forKey:@"key"];
}
-(void)rotation
{
CABasicAnimation *baseAnn = [CABasicAnimation animationWithKeyPath:@”transform.rotation.z”];
//设置开始状态
baseAnn.fromValue = @(0);
baseAnn.duration = 2.0f;
baseAnn.toValue = @(M_PI * 2);
//按照原来的路径返回
//baseAnn.autoreverses = YES;
//设置重复的次数
baseAnn.repeatCount = MAXFLOAT;
[self.testView.layer addAnimation:baseAnn forKey:@"key"];
}
-(void)touchesBegan:(NSSetUITouch > )touches withEvent:(UIEvent *)event
{
[self rotation];
}
CAAnimationGroup 动画组 弹簧效果
(void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
self.button = [UIButton buttonWithType:UIButtonTypeCustom];self.button.frame = CGRectMake(100, 100, 100, 100);
[self.button setBackgroundImage:[UIImage imageNamed:@”Like”] forState:UIControlStateNormal];
[self.button setBackgroundImage:[UIImage imageNamed:@”Like-Blue”] forState:UIControlStateSelected];[self.button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.button];
}
-(void)click:(UIButton *)btn
{
//弹簧效果
//usingSpringWithDamping 0 - 1
[UIView animateWithDuration:1.0f delay:1.0 usingSpringWithDamping:0.3 initialSpringVelocity:5.0f options:0 animations:^{
self.button.frame = CGRectMake(100, 300, 100, 100);
} completion:^(BOOL finished) {
}];
if 0
btn.selected = !btn.selected;
CAAnimationGroup *group = [CAAnimationGroup animation];
CAKeyframeAnimation *rotationAnn = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
CAKeyframeAnimation *keyFrame = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
if(btn.selected)
{
keyFrame.values = @[@(0.5),@(2.0),@(1.0)];
rotationAnn.values = @[@(M_PI / 180 * -30),@(M_PI / 180 * 0)];
}
else
{
keyFrame.values = @[@(2.0),@(0.5),@(1.0)];
rotationAnn.values = @[@(M_PI / 180 * 30),@(M_PI / 180 * 0)];
}
group.duration = 0.25f;
group.animations = @[keyFrame,rotationAnn];
[self.button.layer addAnimation:group forKey:@"key"];
endif
}
CAKeyframeAnimation关键帧动画 点赞效果
(void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.self.testView = [[UIView alloc] initWithFrame:CGRectMake(100,100, 100, 100)];
self.testView.backgroundColor = [UIColor redColor];[self.view addSubview:self.testView];
self.button = [UIButton buttonWithType:UIButtonTypeCustom];
self.button.frame = CGRectMake(100, 300, 100, 100);
[self.button setBackgroundImage:[UIImage imageNamed:@”Like”] forState:UIControlStateNormal];
[self.button setBackgroundImage:[UIImage imageNamed:@”Like-Blue”] forState:UIControlStateSelected];[self.button addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:self.button];
}
-(void)position
{
CAKeyframeAnimation *keyFrame = [CAKeyframeAnimation animationWithKeyPath:@”position”];
keyFrame.values = @[[NSValue valueWithCGPoint:CGPointMake(50, 50)],[NSValue valueWithCGPoint:CGPointMake(200, 200)],[NSValue valueWithCGPoint:CGPointMake(150, 400)],[NSValue valueWithCGPoint:CGPointMake(50, 50)]];
keyFrame.duration = 5.0f;
[self.testView.layer addAnimation:keyFrame forKey:@"key"];
}
-(void)rotation
{
CAKeyframeAnimation *keyFrame = [CAKeyframeAnimation animationWithKeyPath:@”transform.rotation.z”];
keyFrame.values = @[@(M_PI / 180 * 5),@(M_PI / 180 * 0),@(M_PI / 180 * -5),@(M_PI / 180 * 0)];
keyFrame.duration = 0.25f;
keyFrame.repeatCount = MAXFLOAT;
[self.testView.layer addAnimation:keyFrame forKey:@"key"];
}
-(void)click:(UIButton *)btn
{
btn.selected = !btn.selected;
CAKeyframeAnimation *keyFrame = [CAKeyframeAnimation animationWithKeyPath:@"transform.scale"];
if(btn.selected)
{
keyFrame.values = @[@(0.5),@(2.0),@(1.0)];
}
else
{
keyFrame.values = @[@(2.0),@(0.5),@(1.0)];
}
keyFrame.duration = 0.25f;
[self.button.layer addAnimation:keyFrame forKey:@"key"];
}
-(void)touchesBegan:(NSSet UITouch > )touches withEvent:(UIEvent *)event
{
}