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版本的!!!)

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Menlo; color: #272ad8; background-color: #ffffff }
span.s1 { color: #000000 }

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(10, 50, 100, 100)];
    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 + 50);

    //开始动画的时间 相当于延迟 (当前时间+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 + 50);
    [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 + 20, self.redView.center.y + 20)];
    [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 + 100);

    // 动画执行的速度 0~20 默认12
    spring.springSpeed = 20;

    // 弹簧的范围 0~20 默认为4 默认效果非常不明显
    spring.springBounciness = 15;

    [self.redView pop_addAnimation:spring forKey:nil];
}

二: y轴移动

- (void)eySpring_kPOPLayerPositionY
{
    POPSpringAnimation * spring = [POPSpringAnimation animationWithPropertyNamed:kPOPLayerPositionY];

    spring.toValue = @(self.redView.center.y + 100);

    spring.springBounciness = 15;

    [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 + 100, self.redView.center.y + 100)];
    spring.springBounciness = 15;

    [self.redView pop_addAnimation:spring forKey:@"positionX"];
}

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

#pragma mark--平移

一:X轴移动

- (void)eyDecay_kPOPLayerPosition
{
    POPDecayAnimation * decay = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPositionX];
    // 速度
    decay.velocity = @(600);

    // 衰减系数(越小则衰减得越快) 默认为0.998
    decay.deceleration = 0.99;

    [self.redView pop_addAnimation:decay forKey:nil];
}

二:y轴移动

- (void)eyDecay_kPOPLayerPositionY
{
    POPDecayAnimation * decay = [POPDecayAnimation animationWithPropertyNamed:kPOPLayerPositionY];
    // 速度
    decay.velocity = @(600);

    [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 + 20, self.redView.center.y + 20)];

    [self.redView pop_addAnimation:decay forKey:nil];
}

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

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

时间: 2024-11-08 18:11:14

POP简单动画简单使用 (入门级别)的相关文章

【教程】原创:历上最简单的游戏编程入门教程(基于cocos2d-js)

前言: 大家好.我是一个游戏开发者.曾就职于cocos2d-x这个手机游戏引擎的开发的公司. 在这边我准备了一个最简单的教程,想告诉大家制作一个游戏有多简单. 回忆起当年刚刚步入游戏这个行业,我也抱着非常多的疑问. 所以如果大家对游戏有兴趣的朋友,可以在下面留言. 这个教程我会讲的非常通俗易懂.争取几句话之内就让你看到一个效果. 另外教程里面有丰富的图文讲解.我保证你学完之后掌握了做游戏的真髓. 你完全可以马上开始做自己的游戏.并且能够让你的游戏在网页上,ios,android 还有pc平台上跑

ios状态栏调整 简单动画的知识点

首先状态栏式view的属性,所以在viewController中直接重写: /** 修改状态栏 */ - (UIStatusBarStyle)preferredStatusBarStyle { // 修改状态栏的颜色(白色) return UIStatusBarStyleLightContent; } // 这种返回值没有*的说明不是对象,那么不是枚举就是结构体,大多数情况是枚举,所以取值也比较简单,一般是返回值后边加上状态: 在UIKit学习中常用的块动画: // 块动画 animateWit

关于DOM的简单动画

利用DOM制作的一些简单动画 1.div每点击一次 向右移动200px(带DOM动画过渡) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> h1 { font-size: 20px; } #testDiv { width: 150px; height

jquery添加光棒效果的各种方式以及简单动画复杂动画

过滤器.绑定事件.动画 一.基本过滤器 语法 描述 返回值 :first 选取第一个元素 单个元素 :last 选取最后一个元素 单个元素 :not(selector) 选取去除所有与给定选择器匹配的元素 集合元素 :even 选取索引是偶数的所有元素(index 从0开始) 集合元素 :odd 选取索引是奇数的所有元素(index 从0开始) 单个元素 :eq(index) 选取索引等于index的元素 集合元素 :gt 选取索引大于index的元素 集合元素 :lt 选取索引小于index的

2016.01.22 简单动画

简单动画没什么好说的,直接看代码.=-= //横向.纵向移动 [UIView animateWithDuration:0.5 animations:^{ self.aView.frame = CGRectMake(_aView.frame.origin.x, _aView.frame.origin.y + 50, _aView.frame.size.width, _aView.frame.size.height); }]; //渐变效果 [UIView animateWithDuration:0

使用jquery实现的动画简单实例

使用jquery实现的动画简单实例:下面介绍一段利用jquery实现的动画效果,非常的简单,当然在实际项目中不可能有这么简单的应用,不过可供初学者参考一下大致的实现原理,代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/"

自定义实现ExpandableListView收缩的简单动画效果

以下是 ExpandableListView 收缩的简单动画效果 1 /* 2 * Copyright (C) 2014 Gary Guo 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the L

原生javascript实现的一个简单动画

本文章向大家介绍一个javascript实现的动画.点击开始按钮div会往右移动,点击停止后,div停止移动,再点击则继续移动.请看下面代码. <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <head> <title>javascript实现的简单动画</title> <style type="text/css"&g

jQuery实现的动画简单介绍

jQuery实现的动画简单介绍:在网页制作中,使用jQuery可以轻松的实现简单的动画效果,比使用原生的js要简单不少,这是前端程序员的幸运,下面再来对此简单做一些介绍,寄希望能够给需要的朋友带来一定的帮助.一般来说animate()函数是最为常用的函数: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" conten