UI014---常用的三种动画

来源:互联网 发布:触摸屏幕软件 编辑:程序博客网 时间:2024/05/21 18:48

【在ios开发中,动画是廉价的】

一、首尾式动画

代码示例:
复制代码

// beginAnimations表示此后的代码要“参与到”动画中[UIView beginAnimations:nil context:nil];

//设置动画时长
[UIView setAnimationDuration:2.0];

  self.headImageView.bounds = rect;// commitAnimations,将beginAnimation之后的所有动画提交并生成动画[UIView commitAnimations];

复制代码

说明:如果只是修改控件的属性,使用首尾式动画还是比较方便的,但是如果需要在动画完成后做后续处理,就不是那么方便了

二、block代码块动画

代码示例:

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

说明:

(1)在实际的开发中更常用的时block代码块来处理动画操作。

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

三、序列帧动画(以一个简单的TOM猫动画示例)
这里写图片描述

导入提前准备好的素材,对UIImageview和button按钮进行连线。

代码示例:

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

点击按钮,即可执行动画,实现效果截图如下:
这里写图片描述

四、补充知识

  1. Images.xcassets中的素材

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

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

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

  1. 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:nilafterDelay:self.tom.animationDuration];
  1. UIImage imageNamed

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

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

  1. 方法重构的策略

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

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

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

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

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

(1) Destination: 勾选

(2) Folders:

1)选择第一项:黄色文件夹    注意点:Xcode中分文件夹,Bundle中所有所在都在同一个文件夹下,因此,不能出现文件重名的情况    特点:   a.可以直接使用[NSBundle mainBundle]作为资源路径,效率高!   b.可以使用[UIImage imageNamed:]加载图像2)选择第二项:蓝色文件夹    注意点:Xcode中分文件夹,Bundle中同样分文件夹,因此,可以出现文件重名的情况    特点:    a.需要在[NSBundle mainBundle]的基础上拼接实际的路径,效率较差    b.不能使用[UIImage imageNamed:]加载图
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 翠兰主干软了怎么办 花叶子长白色粘粉末怎么办 水培转土培栀子花叶子蔫了怎么办 水冷空调水不循环怎么办 哺乳期乳房一个大一个小怎么办 我喝酒后喂奶了怎么办 磁盘目录不具有读写权限怎么办 玻纤网格布扎手怎么办 模拟城市5细菌太多怎么办 空气风犁叶子卷怎么办 晚上腿比早上粗怎么办 新疆公安边防改革新兵怎么办 专升本没有考上怎么办 摩托车漏检了2年怎么办 19年北京外地车怎么办 汽车遥控钥匙按键坏了怎么办 长安逸动噪音大怎么办 微信设置密码参数错误怎么办 太阳能电加热不加热怎么办 没报到换了工作怎么办 大学最后一年入伍入伍毕业证怎么办 当官不为民做主怎么办 去青海高反了怎么办 地暖地板低于客厅地面怎么办 9万月3分利息怎么办 免维护电瓶亏电怎么办 自煮小火锅吃完怎么办 孕囊形状是扁的怎么办 老公去世房产转到老婆手续怎么办 宝宝一周岁隔奶不喝牛奶怎么办 高中生偷买手机家长怎么办 丈夫迷上打麻将妻子该怎么办 三星pin码忘记了怎么办 who缺陷精子率98怎么办 吃桃胶脸过敏了怎么办 安卓8.0无法充值怎么办 刚下高速限行怎么办 西安限号外地车怎么办 深圳下高速限行怎么办 物业断业主的电怎么办 物业要求拆除外晾衣架怎么办