动画可以让APP“更友好”的与用户交互,苹果提供很多的好看的动画供开发者使用,不过简单的平移、旋转、缩放.......使用起来很简单,但是想要进行一些比较复杂的动画效果,使用起来就比较难以实现,俗话说需求促进开发,facebook提供的开源的框架供我们免费使用,底层使用的是c++去实现,流畅度不输苹果的动画效果,甚至有的动画效果看起来比苹果提供的动画更“流畅”。。。。。。

这篇文章介绍大名鼎鼎的POP动画的使用

POP:   https://github.com/facebook/pop

POP有四种动画:

一:POPBasicAnimation      基础动画 与苹果的 Core Animation 一样

二:POPSpringAnimation       弹簧动画

三:POPDecayAnimation       减速动画(阻尼动画)

四:POPCustomAnimation     自定义动画 (自己实现动画效果),使用很简单不要害怕!!!

第一步:安装

推荐使用Cocoa pods安装 (不会使用Cocoa pods的自行百度吧!以下代码是基于1.0.9版本的!!!)

pod 'pop', '~> 1.0.9'

第二部:编写代码

#pragma mark----------------POPBasicAnimation(基础动画)--------------------

#pragma mark--平移

一:X轴移动

#import "ViewController.h"
#import <POP.h> @interface ViewController () @property (nonatomic, weak) UIView * redView; @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; UIView * view = [[UIView alloc]
initWithFrame:CGRectMake(, , , )];
view.backgroundColor = [UIColor redColor];
[self.view addSubview:view];
self.redView = view; } - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
[super touchesBegan:touches withEvent:event]; [self eyBasic_kPOPLayerPositionX];
} - (void)eyBasic_kPOPLayerPositionX
{
// kPOPLayerPositionX 这个参数决定了执行什么动画
POPBasicAnimation * basic = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerPositionX]; // 不设置默认从当前位置开始执行动画
// basic.fromValue = @(self.redView.center.x); //移动后的位置 一定要包装为NSValue类型
basic.toValue = @(self.redView.center.x + ); //开始动画的时间 相当于延迟 (当前时间+1.0秒)一般不设置
basic.beginTime = CACurrentMediaTime() + 1.0f; // 动画从开始到结束执行的时间 默认为0.4S 根据需要修改
basic.duration = 0.5; // 字符串@"positionX" 是自己起的名字可以传nil,
// 有时候需要移除动画的时候才用到,一般很少用到
[self.redView pop_addAnimation:basic forKey:@"positionX"];
} @end

二: y轴移动

- (void)eyBasic_kPOPLayerPositionY
{
POPBasicAnimation * basic = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerPositionY];
basic.toValue = @(self.redView.center.y + );
[self.redView pop_addAnimation:basic forKey:nil];
}

三:x和y轴同时移动

- (void)eyBasic_kPOPLayerPosition
{
POPBasicAnimation * basic = [POPBasicAnimation animationWithPropertyNamed:kPOPLayerPosition]; // 一定要包装为NSValue类型
basic.toValue = [NSValue valueWithCGPoint:CGPointMake(self.redView.center.x + , self.redView.center.y + )];
[self.redView pop_addAnimation:basic forKey:nil];
}

#pragma mark-----------------POPSpringAnimation(弹簧动画)-------------------

#pragma mark--平移

一:X轴移动

- (void)eySpring_kPOPLayerPositionX
{
POPSpringAnimation * spring = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPositionX]; spring.toValue = @(self.redView.center.x + ); // 动画执行的速度 0~20 默认12
spring.springSpeed = ; // 弹簧的范围 0~20 默认为4 默认效果非常不明显
spring.springBounciness = ; [self.redView pop_addAnimation:spring forKey:nil];
}

二: y轴移动

- (void)eySpring_kPOPLayerPositionY
{
POPSpringAnimation * spring = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPositionY]; spring.toValue = @(self.redView.center.y + ); spring.springBounciness = ; [self.redView pop_addAnimation:spring forKey:nil];
}

三:x和y轴同时移动

- (void)eySpring_kPOPLayerPosition
{
POPSpringAnimation * spring = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPosition]; spring.toValue = [NSValue valueWithCGPoint:CGPointMake(self.redView.center.x + , self.redView.center.y + )];
spring.springBounciness = ; [self.redView pop_addAnimation:spring forKey:@"positionX"];
}

#pragma mark----------------POPDecayAnimation(减速动画)------------------

#pragma mark--平移

一:X轴移动

- (void)eyDecay_kPOPLayerPosition
{
POPDecayAnimation * decay = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPositionX];
// 速度
decay.velocity = @(); // 衰减系数(越小则衰减得越快) 默认为0.998
decay.deceleration = 0.99; [self.redView pop_addAnimation:decay forKey:nil];
}

二:y轴移动

- (void)eyDecay_kPOPLayerPositionY
{
POPDecayAnimation * decay = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPositionY];
// 速度
decay.velocity = @(); [self.redView pop_addAnimation:decay forKey:nil];
}

三:x和y轴同时移动

- (void)eyDecay_kPOPLayerPosition
{
POPDecayAnimation * decay = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPosition];
// 速度
decay.velocity = [NSValue valueWithCGPoint:CGPointMake(self.redView.center.x + , self.redView.center.y + )]; [self.redView pop_addAnimation:decay forKey:nil];
}

更多内容--> 博客导航 每周一篇哟!!!

有任何关于iOS开发的问题!欢迎下方留言!!!或者邮件 lieryangios@126.com 虽然我不一定能够解答出来,但是我会请教iOS开发高手!!!解答您的问题!!!

最新文章

  1. MYSQL介绍安装及一些问题解决
  2. Nodejs的安装及配置
  3. mysqldumpslow使用说明
  4. apt-get &amp;dpkg
  5. hdu 1003(详解) java
  6. transform3D实现翻页效果
  7. poj1141Brackets Sequence(dp+路径)
  8. 跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量
  9. 高效算法——A 归并排序
  10. C# 插入排序算法
  11. android gridview布局,实现长按某一个,所有项都显示删除的图标
  12. Kostya the Sculptor
  13. C语言博客作业-结构体
  14. iOS学习——iOS开发小知识点集合
  15. Win10提示无法创建新的分区也找不到现有的分区解法
  16. 关于Bootstrap fileinput 上传新文件,移除时触发服务器同步删除的配置
  17. Hadoop HBase概念学习系列之模式设计(十)
  18. python selenium2 窗口切换实例
  19. gif处理
  20. NSSM - the Non-Sucking Service Manager

热门文章

  1. C# 主要运算符中的成员访问(?.)
  2. Java - 一道关于整型和字符类型相加的题目
  3. [TCP/IP]ARP与RARP的总结
  4. HDU-1827-Summer Holiday(强连通分量,贪心)
  5. 如何使用在Windows 下AspNetCore Api 和 consul
  6. NET高性能IO
  7. Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率和决策树多元分类使用.precision方法以precision来评估模型的准确率(图文详解)
  8. IOC的使用
  9. storm中的topology-worker-executor-task
  10. 洛谷P2430 严酷的训练