iOS-动画效果(首尾式动画,代码快动画,核心动画,序列帧动画)
一.各个动画的优缺点
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-动画效果(首尾式动画,代码快动画,核心动画,序列帧动画)的更多相关文章
- Android动画效果 translate、scale、alpha、rotate 切换Activity动画 控件位置调整
2011.10.28注:如果需要控件停在动画后的位置,需要设置android:fillAfter属性为true,在set节点中.默认在动画结束后回到动画前位置.设置android:fillAfter后 ...
- jquer导航锚点链接动画效果和返回顶部代码
$(function(){ $(".index_nav li a").click(function(event){ //绑定按钮的单击事件 var index = this.tit ...
- IOS开发-UIView之动画效果的实现方法(合集)
http://www.cnblogs.com/GarveyCalvin/p/4193963.html 前言:在开发APP中,我们会经常使用到动画效果.使用动画可以让我们的APP更酷更炫,最重要的是优化 ...
- iOS tabbar点击动画效果实现
正常情况下,我们点击tabbar都只有一个变色效果,但有时候,如果我们想给它添加一个点击动画,该如何做呢? 先上几个效果图: 1.先放大,再缩小 2.Z轴旋转 3.Y轴位移 ...
- 简单的UIButton按钮动画效果iOS源码
这个是简单的UIButton按钮动画效果案例,源码,简单的UIButton按钮动画,可以自定义button属性. 效果图: <ignore_js_op> 使用方法: 使用时把ButtonA ...
- Javascript动画效果(三)
Javascript动画效果(三) 前面我们已经介绍了速度动画.透明度动画.多物体运动和任意值变化,并且我们在Javascript动画效果(二)中介绍到我们封装了一个简单的插件雏形,接下来我们对前面的 ...
- jQuery Easing 动画效果扩展--使用Easing插件,让你的动画更具美感。
jQuery Easing 是一款比较老的jQuery插件,在很多网站都有应用,尤其是在一些页面滚动.幻灯片切换等场景应用比较多.它非常小巧,且有多种动画方案供选择,使用简单,而且免费. 引入Eas ...
- jQuery 动画效果 与 动画队列
基础效果 .hide([duration ] [,easing ] [,complete ]) 用于隐藏元素,没有参数的时候等同于直接设置 display 属性 $('.target').hide() ...
- UIAlertView弹出视图动画效果
在App设计中为了加强用户体验,我们会常常加入一些友好的动画效果.比如类似UIAlertView弹出的动画效果,由于系统中并没有直接提供类似的动画API,如果我们想要做出一样的效果,那就得深入的研究一 ...
- anime.js 实战:实现一个带有描边动画效果的复选框
在网页或者是APP的开发中,动画运用得当可以起到锦上添花的作用.正确使用动画,不但可以有助于用户理解交互的作用,还可以大大提高网页应用的魅力和使用体验.并且在现在的网页开发中,动画已经成为了一个设计的 ...
随机推荐
- cmd for 循环拷贝文件
这几天忙活部署测试环境, 中途需要拷贝 文件, 直接贴code吧: ::/定义原路径 set source=seventrat_test_backend,seventrat_test_frontend ...
- C++多线程开发之actor model
最近想把写过的一个多线程程序整理一下,这个程序主要特点是有一系列的互相之间有依赖关系的task.于是在网上找相关类库 1,一类是简单的线程池了,这也是原本俺的做法.之前使用的是手工调度,代码实现的很蛋 ...
- [转]如果我有jQuery背景,我应该如何切换到AngularJS的思维模式?
导言 stackoverflow上有一个人问了一个问题:如果我有jQuery背景,我应该如何切换到AngularJS的思维模式? 有一个回复非常经典,获得了两千多票. 为了让国内开发者也能领略到其中的 ...
- Angular学习笔记--last_update 20151106
参考来源:http://www.angularjs.cn/tag/AngularJS?p=1&s=50 基本要求:一周搞定33篇学习文章 目标:develop/refactor lms系统an ...
- RDD分区2GB限制
本文目的 最近使用spark处理较大的数据时,遇到了分区2G限制的问题(ken).找到了解决方法,并且在网上收集了一些资料,记录在这里,作为备忘. 问题现象 遇到这个问题时,spark日志 ...
- Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】
Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...
- eclipse连接远程hadoop集群开发时权限不足问题解决方案
转自:http://blog.csdn.net/shan9liang/article/details/9734693 eclipse连接远程hadoop集群开发时报错 Exception in t ...
- 阿里云 Redis 服务遇到的问题
ERR unknown command eval 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: St ...
- 实现打印级别且带图片的Excel 方案
导出二维数据excel,其实很简单,使用cvs就可以了.但是如果导出格式复杂带样式还带图片的怎么办?客户的要求有时就是这么变态.呵呵.如果使用.net,微软提供的有库,使用php好像也有现成的有库.我 ...
- vim中多标签和多窗口的使用
用vim进行编辑的时候常常因为要编辑多个文件或者是编辑一个文件要参考其他文件而烦恼,这里介绍两种方法: 1.多标签 直接在编辑的时候输入: vim -p 要编辑的文件名 如vim -p * 就是编辑当 ...