效果圖:
#import "ViewController.h" #import <POP.h> @interface ViewController () @property (nonatomic, weak) UIView *testView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor blackColor]; // 初始化測試控件 UIView *testView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; testView.center = self.view.center; testView.backgroundColor = [UIColor redColor]; self.testView = testView; [self.view addSubview:testView]; } - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { // 初始化彈簧動畫 POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerBounds]; springAnimation.springSpeed = 0; // 設置動畫速度(常用) springAnimation.springBounciness = 20; // 設置彈性大小(常用) // springAnimation.dynamicsFriction = 10; // 設置阻止彈性的阻力(選用) // springAnimation.dynamicsTension = 100; // 設置彈性的張力(可以理解為每次變大的程度, 選用) if (self.testView.frame.size.width == 100) { springAnimation.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 50, 50)]; } else { springAnimation.toValue = [NSValue valueWithCGRect:CGRectMake(0, 0, 100, 100)]; } // 添加動畫 [self.testView.layer pop_addAnimation:springAnimation forKey:nil]; } @end