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的开发中,动画运用得当可以起到锦上添花的作用.正确使用动画,不但可以有助于用户理解交互的作用,还可以大大提高网页应用的魅力和使用体验.并且在现在的网页开发中,动画已经成为了一个设计的 ...
随机推荐
- 取消 virtualStore 注册表[启用和禁止 UAC虚拟化]
近日发现,在win2008R2 x64下运行的服务器程序,其注册表读取路径为: [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\SZDomain\itvc1] 但是经 ...
- 字符串匹配的KMP算法——Python实现
#! /usr/bin/python # coding=utf-8 """ 基于这篇文章的python实现 http://blog.sae.sina.com.cn/arc ...
- 了解 JavaScript (6)– 广告条(Banner)
在 Web 上冲浪时,常常会见到定期在图像之间切换的广告条.我们可以用 JavaScript 来实现,重复循环显示它们. 创建循环的广告条 RotatingBanner.html 页面中在循环的广告条 ...
- 【转】使用Cocoapods创建私有podspec
Cocoapods是非常好用的一个iOS依赖管理工具,使用它可以方便的管理和更新项目中所使用到的第三方库,以及将自己的项目中的公共组件交由它去管理.Cocoapods的介绍及优点本文就不在赘述,我开始 ...
- Java的自动装箱和拆箱的简单讲解
装箱就是把基础类型封装成一个类.比如把int封装成Integer,这时你就不能把他当成一个数了,而是一个类了,对他的操作就需要用它的方法了. 拆箱就是把类转换成基础类型.比如你算个加法什么的是不能用 ...
- linux中ssh可以登录sftp不能登录解决办法
我的服务器一直正常使用,平时使用secureCRT进行管理,使用secureFX进行文件的上传下载,突然有一天secureFX连接的时候出问题了,secureFX的日志如下: i SecureFX 版 ...
- SQLServer公历转农历函数(1900年-2049年)
ALTER FUNCTION [dbo].[f_SysGetLunar]( @solarDay DATETIME) RETURNS varchar(20 ...
- 删除windows系统中以前的设备(比如以前的网卡)或驱动的方法
1.在“开始”菜单单击“运行”,然后在“运行”对话框中输入“CMD”命令打开命令提示符窗口:2.在提示符窗口中输入“Set devmgr_show_nonpresent_devices=1”并回车:3 ...
- css强制换行和超出隐藏实现
一.强制换行1 word-break: break-all; 只对英文起作用,以字母作为换行依据. 2 word-wrap: break-word; 只对英文起作用,以单词作为换行依据. 3 ...
- Show in Finder OC代码
[[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs:urls]; /* Activate the Finder, and op ...