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开发高手!!!解答您的问题!!!
POP简单动画简单使用 (入门级别)的更多相关文章
- UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法
基本的动画构成共有四种:透明动画/旋转动画/移动动画/缩放动画. 配置动画的方式有两种,一种是直接使用代码来配置动画效果,另一种是使用xml文档配置动画效果 相比而言,用xml文档写出来的动画效果,写 ...
- 原生JS封装简单动画效果
原生JS封装简单动画效果 一致使用各种插件,有时候对原生JS陌生了起来,所以决定封装一个简单动画效果,熟悉JS原生代码 function animate(obj, target,num){ if(ob ...
- jquery添加光棒效果的各种方式以及简单动画复杂动画
过滤器.绑定事件.动画 一.基本过滤器 语法 描述 返回值 :first 选取第一个元素 单个元素 :last 选取最后一个元素 单个元素 :not(selector) 选取去除所有与给定选择器匹 ...
- UIView简单动画
UIView动态实现的效果有以下几种: 1.动态改变frame 2.动态改变color 3.动态改变alpha 4.动态改变bounds 首先,我们先看几种BasicView动画 #pragma ma ...
- IOS 简单动画 首尾式动画
首尾式动画 首尾式动画即通过实现控件由初始状态到结束状态的过程.(主要表现在控件的Frame 透明度 ) // // ViewController.m // CX 简单动画 // // Created ...
- jQuery中自定义简单动画的实现
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- canvas制作简单动画
在画布元素<canvas>中,除了绘制图形.图像.文字外,还可以制作一些简单的动画,制作过程十分简单,主要分为两步操作: 1.自定义一个函数,用于图形的移动或其他动作. 2.使用setIn ...
- Cocos2d-x 2.1.5 简单动画
Cocos2d新版本函数更改了一些. 下面的代码可以产生一个简单动画. //第一步:生成动画需要的数据 CCTexture2D *texture=CCTextureCache::sharedTextu ...
- python实现简单动画——生命游戏
生命游戏 生命游戏的宇宙是一个无限的,其中细胞的二维正交网格,每个细胞处于两种可能的状态之一,即*活着*或*死亡*(分别是*人口稠密*和*无人居住*).每个细胞与它的八个邻居相互作用,这八个邻居是水平 ...
随机推荐
- Node.js 内置模块fs的readdir方法 查看某个文件夹里面包含的文件内容
fs.readdir(path[, options], callback) 例: "use strict"; const fs = require("fs"); ...
- 关于setTimeout(fn,0)
JS是单线程引擎:它把任务放到队列中,不会同步去执行,必须在完成一个任务后才开始另外一个任务. 浏览器的内核是多线程的,它们在内核制控下相互配合以保持同步,一个浏览器至少实现三个常驻线程:javasc ...
- Zookeeper入门看这篇就够了!!
Zookeeper是什么 官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名 ...
- JavaScript进阶 - 第1章 系好安全带,准备启航
第1章 系好安全带,准备启航 1-1让你认识JS 你知道吗,Web前端开发师需要掌握什么技术?也许你已经了解HTML标记(也称为结构),知道了CSS样式(也称为表示),会使用HTML+CSS创建一个漂 ...
- C# Func与Action总结
Action:无参数无返回值委托. Action<T>:泛型委托,无返回值,根据输入参数的个数不同有十六个重载. Func< out T>:无输入参数,有返回值. Func&l ...
- [TCP/IP]ARP与RARP的总结
一. 总述 简单的说,ARP协议就是将IP地址转换为MAC物理地址:而RARP,就是ARP的逆向,也就是将MAC物理地址转换为IP地址.看起来这两个协议是完全对称的,但发明这两个协议的初衷基本上没有什 ...
- BZOJ 1123 && Luogu P3469 [POI2008]BLO-Blockade 割点+乘法原理
想了半天式子...最后在邓大师的帮助下想出此题....QWQ我还是太菜了 对于一个非割点,ans+=2*(n-1); 对于一个割点,ans+= #include<cstdio> #incl ...
- luogu P2731 骑马修栅栏 Riding the Fences
入度为奇数的点,搜他. 最好邻接矩阵... #include<cstdio> #include<iostream> #define R register int using n ...
- AspnetCore 2.0
AspnetCore 2.0 本文地址 http://www.cnblogs.com/likeli/p/8204054.html 关于 API文档自动生成,用于对APP端的开发帮助文档生成,默认Pro ...
- ASP.NET Core性能测试
ASP.NET Core性能测试 应用性能直接影响到托管服务的成本,因此公司在开发应用时需要格外注意应用所使用的Web框架,初创公司尤其如此.此外,糟糕的应用性能也会影响到用户体验,甚至会因此受到相关 ...