转自文顶顶大神的博客:http://www.cnblogs.com/wendingding/p/3751519.html

ios 开发UI中,经常会用添加动画效果的需求,下面就总结一下,添加动画的三种方式:

一、收尾式动画

// beginAnimations表示此后的代码要“参与到”动画中

    [UIView beginAnimations:nil context:nil];
//设置动画时长
[UIView setAnimationDuration:2.0]; self.headImageView.bounds = rect; // commitAnimations,将beginAnimation之后的所有动画提交并生成动画
[UIView commitAnimations];

注:如果只是修改控件的属性,使用首尾式动画还是比较方便的,但是如果需要在完成后做后续处理,就不那么方便了,这是应该考虑用block代码块。

二、block代码块动画

 //简单的动画效果
[UIView animateWithDuration:2.0 animations:^{
showlab.alpha=;
} completion:^(BOOL finished) {
[showlab removeFromSuperview];
}];

注:1、在实际的开发中更常用的是block代码块来处理动画操作

2、快动画相对来说比较灵活,尤为重要的是能够将动画相关的代码编写在一起,便于代码的阅读和理解。

三、序列帧动画(以一个简单的TOM猫动画示例)

导入准备好的素材,对uiimageView和button按钮进行连接

代码示例:

- (IBAction)eat {

    NSMutableArray  *arrayM=[NSMutableArray array];
for (int i=; i<; i++) {
[arrayM addObject:[UIImage imageNamed:[NSString stringWithFormat:@"eat_%02d.jpg",i]]];
}
//设置动画数组
[self.tom setAnimationImages:arrayM];
//设置动画播放次数
[self.tom setAnimationRepeatCount:];
//设置动画播放时间
[self.tom setAnimationDuration:*0.075];
//开始动画
[self.tom startAnimating];
}

点击按钮,即可执行动画

四、补充知识

1、Imagees。xcassets中的素材

(1)之支持png格式的图片

(2)图片只支持[UIImage imageNamed]的方式实例化,但是不能从button中来加载

(3)在编译时,Images。xcassets中的所有文件会被打包为Assets.car的文件

2、UIImageView的序列帧动画(需要考虑程序性能,释放数据)

// 0. 是否正在动画

[self.tom isAnimating];

// 1. 设置图片的数组

[self.tom setAnimationImages:arrayM];

// 2. 设置动画时长,默认每秒播放30张图片

[self.tom setAnimationDuration:arrayM.count * 0.075];

// 3. 设置动画重复次数,默认为0,无限循环

[self.tom setAnimationRepeatCount:1];

// 4. 开始动画

[self.tom startAnimating];

// 5. 动画播放完成后,清空动画数组

[self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.tom.animationDuration];

3、UIImage ImageNamed

(1)在图片使用完成后,不会直接被释放掉,具体释放时间由系统决定,适用于图片小、常用的图像处理

(2)如果要快速释放图片,可以使用[UIImage imageWithContentsOfFile:path]实例化图像

4、方法重构策略

(1)将具有共性的代码复制到一个新的方法

(2)根据不同的调用情况,增加方法的参数

注:在写程序是不要着急重构,有时候吧代码先写出来,更容易看清楚如何重构才会更好

5. Bundle(包)中的图片素材

往项目中拖拽素材时,通常选择

(1) Destination: 勾选

(2) Folders:

1)选择第一项:黄色文件夹

注意点:Xcode中分文件夹,Bundle中所有所在都在同一个文件夹下,因此,不能出现文件重名的情况

特点:

a.可以直接使用[NSBundle mainBundle]作为资源路径,效率高!

b.可以使用[UIImage imageNamed:]加载图像

2)选择第二项:蓝色文件夹

注意点:Xcode中分文件夹,Bundle中同样分文件夹,因此,可以出现文件重名的情况

特点:

a.需要在[NSBundle mainBundle]的基础上拼接实际的路径,效率较差

b.不能使用[UIImage imageNamed:]加载图

ios 添加动画的方法的更多相关文章

  1. ios添加百度地图方法

    Hello BaiduMapiOS SDK 引入头文件 引入静态库文件 引入系统framework 引入mapapi.bundle资源文件 初始化BMKMapManager 创建BMKMapView ...

  2. UIView封装动画--iOS利用系统提供方法来做转场动画

    UIView封装动画--iOS利用系统提供方法来做转场动画 UIViewAnimationOptions option; if (isNext) { option=UIViewAnimationOpt ...

  3. UIView封装动画--iOS利用系统提供方法来做关键帧动画

    iOS利用系统提供方法来做关键帧动画 ios7以后才有用. /*关键帧动画 options:UIViewKeyframeAnimationOptions类型 */ [UIView animateKey ...

  4. UIView封装动画--iOS 利用系统提供方法来做弹性运动

    iOS 利用系统提供方法来做弹性运动 /*创建弹性动画 damping:阻尼,范围0-1,阻尼越接近于0,弹性效果越明显 velocity:弹性复位的速度 */ [UIView animateWith ...

  5. Unity3D IOS IPhone添加Admob的方法

    原地址:http://dong2008hong.blog.163.com/blog/static/4696882720140403119293/ 首先阅读官方文档https://developers. ...

  6. iOS开发给UIView添加动画Animation

    self.testView需要添加动画的view 1.翻转动画 [UIView beginAnimations:@"doflip" context:nil]; [UIView se ...

  7. iOS中动画的简单使用

    iOS中的动画右两大类1.UIView的视图动画2.Layer的动画 UIView的动画也是基于Layer的动画动画的代码格式都很固定 1.UIView动画 一般方式[UIView beginAnim ...

  8. ios常用动画

    // // CoreAnimationEffect.h // CoreAnimationEffect // // Created by VincentXue on 13-1-19. // Copyri ...

  9. 【转】IOS 30多个iOS常用动画,带详细注释

    原文: http://blog.csdn.net/zhibudefeng/article/details/8691567 CoreAnimationEffect.h 文件 // CoreAnimati ...

随机推荐

  1. poi 抽取execl表面数据源代码工具

    开发中 ,导入导出execl避免不了数据类型格式的校验,在使用poi要使用抽取表面数据,poi暂时不支持单元格抽取,查询poi源码抽取工具类如下,如使用jxl就不必使用,jxl取出的单元格数据已是抽取 ...

  2. c++之五谷杂粮4---explicit

    4.1在要求隐式转换的程序上下文中,我们可以通过将构造函数声明为explicit加以阻止. 关键字explicit只对一个实参的构造函数有效.需要多个实参的构造函数不能用于执行隐式转换,所以无需将这些 ...

  3. AES加解密JS和php互相处理字符

    Reference: http://blog.csdn.net/carlos__z/article/details/53185082 JavaScript code? 1 2 3 4 5 6 7 8 ...

  4. C语言 · 矩阵相乘 · 算法提高

    算法提高 矩阵相乘   时间限制:1.0s   内存限制:256.0MB      问题描述 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容. 当然 ...

  5. python-can 的使用

    最近在搞 websocket, 服务端是用 python 写的,所以,我需要用python 控制 can 去传输相关信息. python-can 模块就是 python 控制 can 的模仿. 利用 ...

  6. swd 适配器接口线序

    1 vref 2 gnd 3 swdio FP1 4 swclk PF0 5 nrst 6 swo PF2

  7. C/C++捕获段错误,打印出错的具体位置(精确到哪一行)_转

    转自:C/C++捕获段错误,打印出错的具体位置(精确到哪一行) 修订:2013-02-16 其实还可以使用 glibc 的 backtrace_symbols 函数,把栈帧各返回地址里面的数字地址翻译 ...

  8. js - html中跳转出frame框架

    echo '<script>alert("密码修改成功,请重新登录!");window.parent.location.href = "'.site_url( ...

  9. golang自定义返回error

    在开发过程中, 标准库返回的error内容已经无法满足我们的需要时,发现builtin.go中error是一个interface, type error interface {     Error() ...

  10. C#基础概念二十五问

    1.静态成员和非静态成员的区别? 答: 静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问 不带有 static 修饰符声明的变量称做非静态变量,在对象被实例化时创建,通过 ...