Facebook发布了Paper以后,进一步开源了其背后的动画引擎Pop,此框架并不知足于苹果自身的动画单调性,致力于给用户一种逼真的动画效果,能够减小用户对于苹果原生Core Animation 复杂的运算,而且Pop提供的API和苹果原生的API用法相似,让开发者更容易接受。使用pop框架进行动画展现会让你的App看起来更加有生气,感受像是活了同样。spring
它主要包含的动画:框架
POPSpringAnimation 有弹性效果的动画类ide
POPBasicAnimation基本动画学习
POPDecayAnimation衰减动画类动画
POPCustomAnimation能够自定义动画的类atom
我的使用第一种动画比较多,作了个小Demo,仅作参考。spa
@interface ViewController () @property (nonatomic,strong) UIButton *button; @property (nonatomic,assign) BOOL isSelected; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; [self.view addSubview:self.button ]; [self.button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside]; [self.button setBackgroundImage:[UIImage imageNamed:@"deleteButtonNormal"] forState:UIControlStateNormal]; self.button.backgroundColor = [UIColor orangeColor]; self.isSelected = YES; } //懒加载 - (UIButton *)button{ if (_button == nil) { _button = [[UIButton alloc]initWithFrame:CGRectMake(50, 70, 26, 26)]; } return _button; } - (void)buttonClick{ POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerSize]; if (self.isSelected == YES) { [_button setBackgroundImage:[UIImage imageNamed:@"deleteButtonSelected"] forState:UIControlStateNormal]; self.isSelected = NO; springAnimation.toValue = [NSValue valueWithCGSize:CGSizeMake(28, 28)]; }else{ [_button setBackgroundImage:[UIImage imageNamed:@"deleteButtonNormal"] forState:UIControlStateNormal]; self.isSelected = YES; springAnimation.toValue = [NSValue valueWithCGSize:CGSizeMake(26, 26)]; } //弹性值 springAnimation.springBounciness = 30; //弹性速度 springAnimation.springSpeed = 20; [self.button.layer pop_addAnimation:springAnimation forKey:@"changesize"]; }
这是一个很简单的展现,做为学习pop框架的开始。code