IOS中的动画右两大类1.UIView的视图动画2.Layer的动画 UIView的动画也是基于Layer的动画
动画的代码格式都很固定
1.UIView动画
一般方式
[UIView beginAnimations:@"ddd" context:nil];//设置动画
[UIView commitAnimations]; //提交动画
这两个是必须有的,然后在两句的中间添加动画的代码
[UIView beginAnimations:@"ddd" context:nil];//设置动画 ddd为动画名称
[UIView setAnimationDuration:3];//定义动画持续时间
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; //setAnimationCurve来定义动画加速或减速方式
[UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.window cache:YES];
//设置动画的样式 forView为哪个view实现这个动画效果
[UIView setAnimationDelay:3]; //设置动画延迟多久执行
[UIView setAnimationDelegate:self]; //设置动画的代理 实现动画执行前后的方法 在commitAnimation之前设置
[UIView setAnimationDidStopSelector:@selector(stop)];//设置动画结束后执行的方法
[UIView setAnimationWillStartSelector:@selector(star)];//设置动画将要开始执行的方法
[UIView commitAnimations]; //提交动画
typedef enum {
UIViewAnimationTransitionNone, //普通状态
UIViewAnimationTransitionFlipFromLeft, //从左往右翻转
UIViewAnimationTransitionFlipFromRight, //从右往左翻转
UIViewAnimationTransitionCurlUp, //向上翻页
UIViewAnimationTransitionCurlDown, //向下翻页
} UIViewAnimationTransition;
typedef enum {
UIViewAnimationCurveEaseInOut,
UIViewAnimationCurveEaseIn,
UIViewAnimationCurveEaseOut,
UIViewAnimationCurveLinear
} UIViewAnimationCurve;
[UIView beginAnimations:@"ddd" context:nil]; //设置动画
view.frame = CGRectMake(200, 200, 100, 100);
[UIView commitAnimations]; //提交动画
当view从本来的frame移动到新的frame时会慢慢渐变 而不是一下就完成了 中间也可以添加到上面那段中间 只是多种效果重叠
以下这些也可以加到 [UIView beginAnimations:@"ddd" context:nil]; [UIView commitAnimations];之间
view.transform = CGAffineTransformMakeTranslation(10, 10);//设置偏移量 相对于最初的 只能偏移一次
view.transform = CGAffineTransformTranslate(view.transform, 10, 10); //设置偏移量 偏移多次
self.view.transform = CGAffineTransformMakeRotation(M_PI);//设置旋转度 只能旋转一次
self.view.transform = CGAffineTransformRotate(self.view.transform, M_PI); //旋转多次
self.view.transform = CGAffineTransformMakeScale(1.1, 1.1); //设置大小 只能改变一次 数值时相对于本来的几倍
self.view.transform = CGAffineTransformScale(self.view.transform, 1.1, 1.1);//改变多次
self.view.transform = CGAffineTransformIdentity;//回到当初的样子 执行一次
self.view.transform = CGAffineTransformInvert(self.view.transform);//得到相反的样子 大小 方向 位置执行多次
Block方式
[UIView animateWithDuration:3 animations:^(void){
//这里相当于在begin和commint之间
}completion:^(BOOL finished){
//这里相当于动画执行完成后要执行的方法,可以继续嵌套block
}];
2.CAAnimation
需要添加库,和包含头文件
caanimation有多个子类
CABasicAnimation
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"];
//@""里的字符串有多种,可以自己找相关资料,一定要填对,动画才会执行 opacity设置透明度 bounds.size设置大小
[animation setFromValue:[NSNumber numberWithFloat:1.0]]; //设置透明度从几开始
[animation setToValue:[NSNumber numberWithFloat:0.3]];//设置透明度到几结束
[animation setDuration:0.1]; //设置动画时间
[animation setRepeatCount:100000];//设置重复时间
[animation setRepeatDuration:4]; //会限制重复次数
[animation setAutoreverses:NO];//设置是否从1.0到0.3 再从0.3到1.0 为一次 如果设置为NO则 1.0到0.3为一次
[animation setRemovedOnCompletion:YES]; //完成时移出动画 默认也是
[view.layer addAnimation:animation forKey:@"abc"];//执行动画
CAKeyframeAnimation
CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"position"];//设置view从初始位置经过一系列点
NSArray *postionAraay = [NSArray arrayWithObjects:[NSValue valueWithCGPoint:CGPointMake(100, 20)], [NSValue valueWithCGPoint:CGPointMake(40, 80)],[NSValue valueWithCGPoint:CGPointMake(30, 60)],[NSValue valueWithCGPoint:CGPointMake(20, 40)],[NSValue valueWithCGPoint:CGPointMake(0, 100)],nil];//设置点
NSArray *times = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.3],[NSNumber numberWithFloat:0.5],[NSNumber numberWithFloat:0.6],[NSNumber numberWithFloat:0.1],[NSNumber numberWithFloat:1.0], nil]; //设置移动过程的时间
[animation setKeyTimes:times];
[animation setValues:postionAraay];
[animation setDuration:5]; //设置动画时间
[bigImage.layer addAnimation:animation forKey:@"dd"]; //执行动画
CATransition
CATransition *animation = [CATransition animation];
animation.duration = 0.5f;
animation.timingFunction = UIViewAnimationCurveEaseInOut;
animation.fillMode = kCAFillModeForwards;
/*
kCATransitionFade;
kCATransitionMoveIn;
kCATransitionPush;
kCATransitionReveal;
*/
/*
kCATransitionFromRight;
kCATransitionFromLeft;
kCATransitionFromTop;
kCATransitionFromBottom;
*/
animation.type = kCATransitionPush;
animation.subtype = kCATransitionFromBottom;
[view.layer addAnimation:animation forKey:animation];
type也可以直接用字符串
/*
cube
suckEffect 卷走
oglFlip 翻转
rippleEffect 水波
pageCurl 翻页
pageUnCurl
cameraIrisHollowOpen
cameraIrisHollowClose
*/
相关推荐
- [iOS动画和特效(一)UIView动画和CoreAnimation](http://liuyanwei.jumppo.com/2015/10/30/iOS-Animation-UIViewAndCoreAnimation.html) - [iOS动画和特效(二)UIKit力学行为]...
标题《A_GUIDE_TO_IOS_ANIMATION_2.0.pdf》揭示了这份文档是一本关于iOS动画的学习手册的第二版。文档的副标题为“Kitten的iOS 动画学习手册”,说明这份手册是基于Kitten这个名字的作者所编写。通过“中文高清彩板...
"swift-iOS动画库的精选列表"是一个汇集了优秀Swift动画库的资源集合,旨在帮助开发者们在项目中引入高质量的动画效果。 首先,我们要了解Swift中的动画基础。Swift内置了UIKit框架,其中`UIView`类包含了基本的...
《Swift中的iOS动画集合库——Spring深度解析》 在iOS应用开发中,动画效果往往能够提升用户体验,使得交互更加生动有趣。"实用,易用的 iOS 动画集合库.zip" 提供了一个名为Spring的开源项目,专为Swift开发者设计...
本资源"iOS动画效果集 - CA360.zip"包含了一系列基于Objective-C编写的`Core Animation`示例,旨在帮助开发者深入理解和运用这个框架。 `Core Animation`并非只是简单的2D动画库,而是通过图层(Layers)和渲染树...
Hero的开源特性意味着开发者可以查看其源代码,了解底层实现,这对于学习iOS动画编程和优化性能非常有帮助。同时,社区支持和持续更新也是开源项目的一大优势,开发者可以利用GitHub等平台提出问题、报告bug、请求新...
"iOS动画-animation1"可能是一个关于如何在iOS应用中创建和使用基本动画的教程或项目示例。在这里,我们将深入探讨iOS动画的基础知识,包括Core Animation、UIView动画以及CAAnimation的相关概念。 1. **Core ...
首先,iOS动画主要基于Core Animation框架,这是一个强大的2D图形渲染引擎,能够实现平滑、高效的动画效果。在iOS中,有两种主要类型的动画:视图动画(UIView animation)和层动画(CALayer animation)。视图动画...
"iOS动画源码"这个主题深入探讨了iOS系统中的动画实现技术,包括Core Animation、UIKit Dynamics以及自定义动画等。这里我们将详细解析这些动画技术,并提供相关的源码实践。 一、Core Animation Core Animation是...
在iOS开发中,动画是提升用户体验的关键因素,它能让用户界面更加生动有趣。...通过研究"moveAndscale"这个示例,开发者可以学习到iOS动画的基础和高级技巧,从而在自己的应用中实现丰富的视觉效果。
IOS动画核心技术与案例实战
首先,我们需要理解iOS动画的基础。iOS中的动画主要基于Core Animation框架,这是一个强大的2D图形渲染系统,它可以创建出流畅、高性能的视觉效果。在Xcode项目中,我们通常会使用`UIView`类或其子类的`...
以下是关于“ios动画效果”的详细知识点: 1. **Core Animation**: iOS中的动画主要基于Core Animation框架,这是一个底层技术,负责处理2D图形渲染。通过Core Animation,开发者可以创建平滑、高性能的动画,包括...
在iOS动画中,BASE曲线指的是动画的时间曲线,通常指的是CAKeyframeAnimation中的timingFunction。这个属性决定了动画随时间变化的速度。常见的BASE曲线有线性、easeIn、easeOut、easeInOut等。线性曲线使动画以恒定...
1. iOS动画与用户交互的重要性:文档强调了iOS动画和用户交互在移动开发中的重要性。在iOS应用开发中,动画技术不仅能够提升用户体验,还可以增强用户界面的直观性和互动性。 2. 移动开发资源的匮乏:文件提到国内...
在iOS动画的学习中,关键帧动画是第四章的内容,这部分内容深入探讨了关键帧动画的实现和应用。在移动开发领域,尤其是iOS平台,关键帧动画是实现流畅用户体验的重要手段之一。由于国内相关的中文资料较为缺乏,加上...
"iOS动画梦幻星空"是一个项目,旨在模仿音乐应用《唱吧》启动时的星空闪烁效果。这个效果通过使用Core Animation框架中的CAEmitterLayer实现,为用户带来视觉上的梦幻感受,星星闪烁如同夜空中繁星点点,营造出一种...
在iOS开发中,动画是提升用户体验的关键因素之一。"ios 动画 时钟 波浪"这个主题涉及了三个核心概念:iOS平台上的动画实现、时钟动画以及波浪效果。下面将详细阐述这三个方面的知识。 首先,我们来探讨iOS中的动画...
总的来说,iOS动画特效是开发者手中的强大工具,能够显著提升应用的用户体验。通过熟练掌握Core Animation、SpriteKit、SceneKit等框架,以及粒子系统、曲线运动等技术,可以创造出丰富多样的视觉表现,使应用在竞争...
本教程以"iOS动画小demo"为主题,将深入探讨如何在iOS应用中实现简单且实用的动画,尤其是如何在UITableView的Cell中添加动画效果,以及如何在用户交互下控制动画的展示。 首先,我们要了解iOS中的动画基本原理。...