文档章节

iOS开发中动画的各种类型及方法总结

托楚齐坎基基
 托楚齐坎基基
发布于 2015/09/21 21:07
字数 511
阅读 58
收藏 5

1.UIImage Animation图片动画

#define FPS 30.0
- (void)viewDidLoad
{
    [super viewDidLoad];
    UIImage *image = [UIImage animatedImageNamed:
@"ship-anim" duration:5*1/FPS];
    self.imageView.image = image;
}


2.NSTimer 计时器实现动画的方式

 2.1基本方法:

#define FPS 30.0
- (void)viewDidLoad
{
   [super viewDidLoad];
   self.count = 0;
   self.imageView.alpha = 0;
   //使用1/FPS计算出每一帧花费多长时间
   [NSTimer scheduledTimerWithTimeInterval:1/FPS target:self selector:@selector(changeAlpha:) userInfo:nil repeats:YES];
}
-(void)changeAlpha:(NSTimer *)timer{
   self.count++;
   //计算出每一帧需要修改的alpha值
   self.imageView.alpha+=1/(FPS*5);
   //根据完成动画的所有帧数决定
   //停止计时器
   if(self.count==FPS*5){
   [timer invalidate];
   NSLog(@".....");
    }
}

 2.2NStimer Animation 飞机飞行

#define FPS 30.0// 帧率
#define DURATION 2.0 // 动画时长
- (void)viewDidLoad
{
    [super viewDidLoad];
    self.startCenter = self.imageView.center;
    self.count = 0;
}
- (IBAction)start:(UIButton *)sender {
    [NSTimer scheduledTimerWithTimeInterval:1/FPS target:self selector:@selector(move:) userInfo:nil repeats:YES];
}
//每一帧都来执行move方法,修改图片的中心点
//匀速动画:当前值 = 开始值+当前帧数*(结束值-开始值)/(帧率*动画时长)
-(void)move:(NSTimer *)timer{
    self.count++;
    CGPoint center = self.imageView.center;
    center.y = self.startCenter.y + self.count*(70-self.startCenter.y)/(FPS*DURATION);
    self.imageView.center = center;
    if(self.count >= FPS*DURATION){
        [timer invalidate];
    }
}

2.3变速公式

- (IBAction)start:(id)sender {
    [NSTimer scheduledTimerWithTimeInterval:1/FPS target:self selector:@selector(move:) userInfo:nil repeats:YES];
}
//变速公式:
//当前值= 上一次的值+(目标值-上一次的值)*渐进因子
-(void)move:(NSTimer *)timer{
    CGPoint center = self.imageView.center;
    center.y = center.y+(70-center.y)*0.08;
    self.imageView.center = center;
    if(center.y<=70){
        [timer invalidate];
    }
}

3.UIView Aniamtion

 3.1基本方法

- (IBAction)start:(id)sender {
    CGPoint center = self.imageView.center;
    center.y = 70;
    [UIView animateWithDuration:3 animations:^{
        //此处只要设定要被添加动画的视图 动画结束时的状态是什么
        self.imageView.center  = center;
    }];
}

 3.2其他方法

- (void)viewDidLoad
{
    [super viewDidLoad];
    //先记录此刻摆放的位置,作为
    //动画结束时的位置
    CGRect labelEndFrame = self.label.frame;
    CGRect imageViewEndFrame = self.imageView.frame;
    //设置动画前label的起始位置
    CGRect labelStartFrame = labelEndFrame;
    labelStartFrame.origin.x = -labelStartFrame.size.width;
    self.label.frame = labelStartFrame;
    CGRect imageViewStartFrame = imageViewEndFrame;
    imageViewStartFrame.origin.y = self.view.bounds.size.height;
    self.imageView.frame = imageViewStartFrame;
    //添加动画
    [UIView animateWithDuration:2 animations:^{
        //设置两个需要做动画的视图的结束位置
        self.label.frame = labelEndFrame;
        self.imageView.frame = imageViewEndFrame;
    }];
}
- (IBAction)move:(id)sender {
    CGPoint center = self.imageView.center;
    center.y -= 300;
    CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI);
    [UIView animateWithDuration:3 delay:0 options:UIViewAnimationOptionCurveEaseIn|UIViewAnimationOptionRepeat|UIViewAnimationOptionAutoreverse animations:^{
        self.imageView.center = center;
        self.imageView.transform = transform;
    } completion:nil];
}





© 著作权归作者所有

托楚齐坎基基
粉丝 1
博文 16
码字总数 7868
作品 0
程序员
私信 提问
iOS高仿QQ侧滑控件、下载框架、动画效果、扫一扫、颜色变化、K线图等源码

iOS精选源码 仿京东"加入购物车"转场动画(http://www.code4app.com/thread-28162-1-1.html) ColorTool(颜色转换)(http://www.code4app.com/thread-29256-1-1.html) Swift 专业版K线(http://w......

sunnyaigd
2018/04/17
65
0
系统学习iOS动画之零:说明和目录

动画制作很有趣,可以为用户界面注入活力。 如果使用得当,动画可以向用户传达信息,并将用户注意力吸引到界面的重要部分。 之前也做过一些iOS动画,但一直没有系统学习过,这次我用RW网站的...

Andy_Ron
2018/12/21
0
0
iOS个人中心渐变动画、微信对话框、标签选择器、自定义导航栏、短信验证输入框等源码

iOS精选源码 简单的个人中心页面-自定义导航栏并予以渐变动画(http://www.code4app.com/thread-10860-1-1.html) 程序员取悦女票的正确姿势---Tip1(iOS美容篇)(http://www.code4app.com/th...

Android爱开源
01/16
34
0
ios中应用Lottie解决动画问题

作为一名iOS工程师,深知复杂动画的痛苦,下面我们来介绍下Lottie来解决日常的动画难题。 Lottie的简单介绍: 使用Lottie开发的流程是: 设计师在AE中设计完成你的动画,通过bodymoving插件导...

威廉云霄
02/20
0
0
设计 iOS 应用时需要知道的 5 件事

根据我们制作优秀的 iOS 应用的经验,我们认为设计师应该在心里的牢记适用于 iOS 的 5 件事。虽然本文关注的重点只在 iOS 应用,但大部分的意见也适用于其他移动平台。 1. 了解您的媒体 这似...

oschina
2013/03/21
3.9K
7

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
12
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部