zoukankan      html  css  js  c++  java
  • FaceBook pop 动画开源框架使用教程说明

    https://github.com/facebook/pop

    pop

    Pop is an extensible animation engine for iOS and OS X. In addition to basic static animations, it supports spring and decay dynamic animations, making it useful for building realistic, physics-based interactions. The API allows quick integration with existing Objective-C codebases and enables the animation of any property on any object. It's a mature and well-tested framework that drives all the animations and transitions in Paper.

    Build Status

    POPdemo

    A simple demo for facebook's pop framework.

    pop一共有四个大类

    POPSpringAnimation  有弹性效果的动画类(个人比较喜欢这个)
    POPBasicAnimation 基本动画类
    POPDecayAnimation 衰减动画类
    POPCustomAnimation 可以自定义动画的类
    

    导入pop

    很简单,直接把pop文件夹拖到项目里,然后导入pop.h即可。

    #import "POP.h"
    

    下面的代码示例用POPSpringAnimation做一个弹性放大-缩小的效果

    - (void)viewDidLoad
    {
       [super viewDidLoad];
       // Do any additional setup after loading the view from its nib.
    
    //添加手势
        UITapGestureRecognizer *gestureForSpring = [[UITapGestureRecognizer alloc] init];
        [gestureForSpring addTarget:self action:@selector(changeSize:)];
        [_springView addGestureRecognizer:gestureForSpring];
    
    }
    
    
    
    - (void)changeSize:(UITapGestureRecognizer*)tap{
    - 
        //用POPSpringAnimation 让viewBlue实现弹性放大缩小的效果
        POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerSize];
    
        CGRect rect = _springView.frame;
        if (rect.size.width==100) {
            springAnimation.toValue = [NSValue valueWithCGSize:CGSizeMake(300, 300)];
        }
        else{
            springAnimation.toValue = [NSValue valueWithCGSize:CGSizeMake(100, 100)];
        }
    
        //弹性值
        springAnimation.springBounciness = 20.0;
        //弹性速度
        springAnimation.springSpeed = 20.0;
    
        [_springView.layer pop_addAnimation:springAnimation forKey:@"changesize"];
    
    }
    

    效果如下

    image

    上面的代码是改变view的size,下面示例改变position

     POPSpringAnimation *springAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPosition];
    
        CGPoint point = _springView.center;
    
        if (point.y==240) {
            springAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(point.x, -230)];
        }
        else{
            springAnimation.toValue = [NSValue valueWithCGSize:CGSizeMake(point.x, 240)];
        }
    
        //弹性值
        springAnimation.springBounciness = 20.0;
        //弹性速度
        springAnimation.springSpeed = 20.0;
    
        [_springView pop_addAnimation:springAnimation forKey:@"changeposition"];
    
    

    效果:

    image
    这个效果可以做一个弹出框从上往下跳出来,我之前做过这个效果,用了N多代码,用pop只用几句代码就实现了。

    一个比较实用的效果,弹出菜单:

    image
    代码如下:

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"+" style:UIBarButtonItemStyleDone target:self action:@selector(showPop)];
    
    - (void)showPop{
    
        if (_isOpened) {
            [self hidePop];
            return;
        }
        _isOpened = YES;
    
        POPSpringAnimation *positionAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPViewFrame];
        positionAnimation.fromValue = [NSValue valueWithCGRect:_hidePosition];
        positionAnimation.toValue = [NSValue valueWithCGRect:_showPosition];
        positionAnimation.springBounciness = 15.0f;
        positionAnimation.springSpeed = 20.0f;
        [_popView pop_addAnimation:positionAnimation forKey:@"frameAnimation"];
    }
    
    - (void)hidePop{
    
        POPBasicAnimation *positionAnimation = [POPBasicAnimation animationWithPropertyNamed:kPOPViewFrame];
        positionAnimation.fromValue = [NSValue valueWithCGRect:_showPosition];
        positionAnimation.toValue = [NSValue valueWithCGRect:_hidePosition];
        //key一样就会用后面的动画覆盖之前的
        [_popView pop_addAnimation:positionAnimation forKey:@"frameAnimation"];
    
        _isOpened = NO;
    }
    
    
  • 相关阅读:
    友盟—安卓巴士【Android开发原创教程大赛】
    iOS开发视频教程下载/iphone开发视频教程下载
    发一个Android开发的外包项目。欢迎外包团队来骚扰
    安卓巴士总结了近百个Android优秀开源项目,覆盖Android开发的每个领域
    安卓巴士精选Android开发教程
    做了一个系列的Android开发教程列表
    深刻理解C#的传值调用和传引用调用
    《CLR Via C# 第3版》笔记之(四) 类中字段的默认赋值
    《CLR Via C# 第3版》笔记之(七) const和readonly
    《CLR Via C# 第3版》笔记之(十二) 事件
  • 原文地址:https://www.cnblogs.com/lingzhao/p/3747503.html
Copyright © 2011-2022 走看看