一.各个动画的优缺点

1.首尾动画:如果只是修改空间的属性,使用首尾动画比较方便,如果在动画结束后做后续处理,就不是那么方面了。

2.核心动画:有点在于对后续的处理方便。

3.块动画:

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

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

4.使用序列帧动画:对UIImageview和button按钮进行连线。

 #import "ViewController.h"

 @interface ViewController ()
{
UIView *_view;
UIImageView *_imageView;
}
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; //用于block代码快动画,核心动画,UIView封装的首尾式动画
_view = [[UIView alloc] init];
_view.frame = CGRectMake(, , , );
_view.backgroundColor = [UIColor redColor];
[self.view addSubview:_view]; //用于序列帧动画
_imageView = [[UIImageView alloc] init];
_imageView.frame = CGRectMake(, , , );
_imageView.backgroundColor = [UIColor orangeColor];
[self.view addSubview:_imageView];
} #pragma mark 序列帧动画
//- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
//{
// NSMutableArray * arrayM = [NSMutableArray array];
//
//
// for (int i = 0; i < 4; i ++) {
// [arrayM addObject:[UIImage imageNamed:[NSString stringWithFormat:@"%d.png",i]]];
// }
// //设置动画数组
// [_imageView setAnimationImages:arrayM];
//
// //设置动画播放次数 MAXFLOAT:无穷大数,表示一直循环下去
// [_imageView setAnimationRepeatCount:MAXFLOAT];
//
// //设置动画播放时间(图片个数 * 计划的每张照片动画时长)
// [_imageView setAnimationDuration:4 * 0.75];
//
// //开始动画
// [_imageView startAnimating];
//} #pragma mark block代码快动画
//- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
//{
//
// [UIView animateWithDuration:2.0 animations:^{
// NSLog(@"动画开始执行前的位置: %@",NSStringFromCGPoint(_view.center));
// _view.center = CGPointMake(self.view.bounds.size.width - 20, self.view.bounds.size.height - 20);
//
//
// } completion:^(BOOL finished) {
// NSLog(@"动画执行完毕后的位置: %@",NSStringFromCGPoint(_view.center));
// }];
//} #pragma mark 核心动画
//- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
//{
// //创建核心动画
// CABasicAnimation * animation = [CABasicAnimation animation];
//
// //平移
// animation.keyPath = @"position";
//
// //设置执行的动画
// animation.toValue = [NSValue valueWithCGPoint:CGPointMake(self.view.bounds.size.width - 20, self.view.bounds.size.height - 20)];
//
// //设置动画的时长
// animation.duration = 2.0f;
//
// //设置动画执行完毕之后不删除动画
// animation.removedOnCompletion = NO;
//
// //设置保存动画的最新状态
// animation.fillMode = kCAFillModeForwards;
//
// //设置动画的代理
// animation.delegate = self;
//
// //给控件添加核心动画
// [_view.layer addAnimation:animation forKey:nil];
//}
//#pragma mark 核心动画开始时调用的方法
//- (void)animationDidStart:(CAAnimation *)anim
//{
// NSLog(@"动画开始执行前的位置: %@",NSStringFromCGPoint(_view.center));
//}
//#pragma mark 核心动画结束时调用的方法
//- (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
//{
// NSLog(@"动画执行完毕后的位置: %@",NSStringFromCGPoint(_view.center));
//} #pragma mark UIView封装的首尾式动画
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
NSLog(@"动画执行之前的位置: %@",NSStringFromCGPoint(_view.center)); //首尾式动画
//执行动画
[UIView beginAnimations:nil context:nil]; //动画时间
[UIView setAnimationDuration:2.0f]; //设置动画的代理
[UIView setAnimationDelegate:self]; //设置动画执行完毕调用的事件
[UIView setAnimationDidStopSelector:@selector(didStopAnimation)]; _view.center = CGPointMake(self.view.bounds.size.width - , self.view.bounds.size.height - ); //动画结束
[UIView commitAnimations];
} #pragma mark 动画执行完毕调用的方法
- (void)didStopAnimation
{
NSLog(@"动画执行完毕"); NSLog(@"动画执行之后的位置: %@",NSStringFromCGPoint(_view.center));
} @end

iOS-动画效果(首尾式动画,代码快动画,核心动画,序列帧动画)的更多相关文章

  1. Android动画效果 translate、scale、alpha、rotate 切换Activity动画 控件位置调整

    2011.10.28注:如果需要控件停在动画后的位置,需要设置android:fillAfter属性为true,在set节点中.默认在动画结束后回到动画前位置.设置android:fillAfter后 ...

  2. jquer导航锚点链接动画效果和返回顶部代码

    $(function(){ $(".index_nav li a").click(function(event){ //绑定按钮的单击事件 var index = this.tit ...

  3. IOS开发-UIView之动画效果的实现方法(合集)

    http://www.cnblogs.com/GarveyCalvin/p/4193963.html 前言:在开发APP中,我们会经常使用到动画效果.使用动画可以让我们的APP更酷更炫,最重要的是优化 ...

  4. iOS tabbar点击动画效果实现

    正常情况下,我们点击tabbar都只有一个变色效果,但有时候,如果我们想给它添加一个点击动画,该如何做呢? 先上几个效果图: 1.先放大,再缩小 2.Z轴旋转               3.Y轴位移 ...

  5. 简单的UIButton按钮动画效果iOS源码

    这个是简单的UIButton按钮动画效果案例,源码,简单的UIButton按钮动画,可以自定义button属性. 效果图: <ignore_js_op> 使用方法: 使用时把ButtonA ...

  6. Javascript动画效果(三)

    Javascript动画效果(三) 前面我们已经介绍了速度动画.透明度动画.多物体运动和任意值变化,并且我们在Javascript动画效果(二)中介绍到我们封装了一个简单的插件雏形,接下来我们对前面的 ...

  7. jQuery Easing 动画效果扩展--使用Easing插件,让你的动画更具美感。

    jQuery  Easing 是一款比较老的jQuery插件,在很多网站都有应用,尤其是在一些页面滚动.幻灯片切换等场景应用比较多.它非常小巧,且有多种动画方案供选择,使用简单,而且免费. 引入Eas ...

  8. jQuery 动画效果 与 动画队列

    基础效果 .hide([duration ] [,easing ] [,complete ]) 用于隐藏元素,没有参数的时候等同于直接设置 display 属性 $('.target').hide() ...

  9. UIAlertView弹出视图动画效果

    在App设计中为了加强用户体验,我们会常常加入一些友好的动画效果.比如类似UIAlertView弹出的动画效果,由于系统中并没有直接提供类似的动画API,如果我们想要做出一样的效果,那就得深入的研究一 ...

  10. anime.js 实战:实现一个带有描边动画效果的复选框

    在网页或者是APP的开发中,动画运用得当可以起到锦上添花的作用.正确使用动画,不但可以有助于用户理解交互的作用,还可以大大提高网页应用的魅力和使用体验.并且在现在的网页开发中,动画已经成为了一个设计的 ...

随机推荐

  1. Language

    TODO Java(jdk8),Scala,Spring,Spark,Python,Linux,C,Netty,HttpClient,Hadoop YARN,RaspberryPi Jetty,Tom ...

  2. HTML5手机APP开发入(4)

    HTML5手机APP开发入(4) 课程内容 完成一个自定义的Component用来展现通讯录用户的明细信息如下图 http://bootsnipp.com/snippets/featured/prof ...

  3. 如何查看Linux的系统是64位的还是32位的

    可以用命令“getconf LONG_BIT”查看,如果返回的结果是32则说明是32位,返回的结果是64则说明是64位. 此外还可以使用命令“uname -a”查看,输出的结果中,如果有x86_64就 ...

  4. Express ejs 3.* layout.ejs

    新版本改成了 <%- include file.ejs %> 具体使用方法如下:1. views文件夹 下新建header.ejs,插入代码 <html><head> ...

  5. angular post表单

    参数文章:http://angularjs.cn/A0qF angularjs中Post使用的是json的交互方法,一般服务器还没达到这个阶段,我们可以用回传统的&参数的方法: var myA ...

  6. 推荐--《Android深入浅出》

    基本信息 书名:Android深入浅出 作者:张旸 著 页数: 661 出版社: 机械工业出版社; 第1版 (2014年4月17日) 语种: 简体中文 ASIN: B00JR3P8X0 品牌: 北京华 ...

  7. Oracle Essbase入门系列(一)

    1. 开篇序 本文是几年前做Hyperion Planning项目时写的,后来陆陆续续有些补充.本来打算将整个EPM写一系列的教程,但HFM写到1/3就没动力了.不过至少Essbase这部分是完整的. ...

  8. 判断big endian和little endian的方法

    http://blog.sina.com.cn/s/blog_6ab0b9a80101awzr.html   不同体系的CPU在内存中的数据存储往往存在着差异.例如,Intel的x86系列处理器将低序 ...

  9. QQ空间直播秒开优化实践[读]

    http://mp.weixin.qq.com/s?__biz=MzI1MTA1MzM2Nw==&mid=2649796799&idx=1&sn=42061b7d021b8d8 ...

  10. 写给已有编程经验的 Python 初学者的总结【转】

    当我开始学习Python的时候,有些事我希望我一早就知道.我花费了很多时间才学会这些东西.我想要把这些重点都编纂到一篇文章当中.这篇文章的目标读者,是刚刚开始学习Python语言的有经验的程序员,想要 ...