POP简单动画简单使用 (入门级别)
动画可以让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开发高手!!!解答您的问题!!!
最新文章
- MYSQL介绍安装及一些问题解决
- Nodejs的安装及配置
- mysqldumpslow使用说明
- apt-get &;dpkg
- hdu 1003(详解) java
- transform3D实现翻页效果
- poj1141Brackets Sequence(dp+路径)
- 跟我学机器视觉-HALCON学习例程中文详解-开关引脚测量
- 高效算法——A 归并排序
- C# 插入排序算法
- android gridview布局,实现长按某一个,所有项都显示删除的图标
- Kostya the Sculptor
- C语言博客作业-结构体
- iOS学习——iOS开发小知识点集合
- Win10提示无法创建新的分区也找不到现有的分区解法
- 关于Bootstrap fileinput 上传新文件,移除时触发服务器同步删除的配置
- Hadoop HBase概念学习系列之模式设计(十)
- python selenium2 窗口切换实例
- gif处理
- NSSM - the Non-Sucking Service Manager
热门文章
- C# 主要运算符中的成员访问(?.)
- Java - 一道关于整型和字符类型相加的题目
- [TCP/IP]ARP与RARP的总结
- HDU-1827-Summer Holiday(强连通分量,贪心)
- 如何使用在Windows 下AspNetCore Api 和 consul
- NET高性能IO
- Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率和决策树多元分类使用.precision方法以precision来评估模型的准确率(图文详解)
- IOC的使用
- storm中的topology-worker-executor-task
- 洛谷P2430 严酷的训练