用POP動畫引擎實現彈簧動畫(POPSpringAnimation)


效果圖:

#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

github:https://github.com/RinpeChen/POPSpringAnimationDemo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM