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