pop框架是Google推出的用于處理iOS動(dòng)畫的一個(gè)特別好用的框架
如果對(duì)這個(gè)框架沒有了解的,可與去看一下官方提供的資料
這次我主要使用pop框架實(shí)現(xiàn)一個(gè)簡單的彈簧效果
對(duì)應(yīng)的demo為
Demo
實(shí)現(xiàn)文件名稱是ThirdViewController
最終的效果圖為:

pop框架實(shí)現(xiàn)彈簧動(dòng)畫.gif
首先,定義一個(gè)UIView屬性
@property (nonatomic, strong) UIView *myView;
將其添加到view上
- (UIView *)myView {
if (_myView) {
return _myView;
}
_myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 100)];
_myView.backgroundColor = [UIColor yellowColor];
return _myView;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
self.title = @"pop框架實(shí)現(xiàn)彈簧動(dòng)畫";
self.navigationController.navigationBar.translucent = NO;
self.view.backgroundColor = [UIColor whiteColor];
// [self.view addSubview:self.tableView];
self.myView.center = self.view.center;
[self.view addSubview:self.myView];
}
在點(diǎn)擊屏幕時(shí),實(shí)現(xiàn)相應(yīng)的代碼效果
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
//初始化彈簧動(dòng)畫
POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds];
springAnimation.springSpeed = 0;//設(shè)置動(dòng)畫的速度
springAnimation.springBounciness = 10;//設(shè)置彈性大小
springAnimation.dynamicsFriction = 10;//設(shè)置阻力的大小
springAnimation.dynamicsTension = 100;//設(shè)置張力的大小
if (self.myView.frame.size.width == 100) {
springAnimation.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 50, 50)];
} else {
springAnimation.fromValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 100, 100)];
}
//添加動(dòng)畫
[self.myView.layer pop_addAnimation:springAnimation forKey:@"animation"];
}
總結(jié)
最終的效果圖

pop框架實(shí)現(xiàn)彈簧動(dòng)畫.gif
Demo地址