IOS QuartzCore核心动画框架
IOS QuartzCore核心动画框架
- 使用核心动画需要引入的框架:#import
- CALayer: CoreAnimation
- CALayer就是UIView上的图层,很多的CALayer组成了UIView。
- CALayer与UIView是两个完全不同的类
- UIView动画就是简单动画,可以实现改变,偏移,形变,翻转,旋转,翻页
- QuartzCore.framework:
- CAAnimation:
- CAAnimationGroup: 并行动画
- CATransition:
- CAPropertyAnimation: 属性动画
- CABasicAnimation:
- CAKeyframeAnimation:
// 使用关键帧动画进行旋转
CAKeyframeAnimation *keyFrame = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
CATransform3D transform3d1 = CATransform3DMakeRotation(M_PI * 0.0, 0, 0, 1.0f);
CATransform3D transform3d2 = CATransform3DMakeRotation(M_PI * 0.5, 0, 0, 1.0f);
CATransform3D transform3d3 = CATransform3DMakeRotation(M_PI * 1.0, 0, 0, 1.0f);
CATransform3D transform3d4 = CATransform3DMakeRotation(M_PI * 1.5, 0, 0, 1.0f);
CATransform3D transform3d5 = CATransform3DMakeRotation(M_PI * 2.0, 0, 0, 1.0f);
NSValue *value1 = [NSValue valueWithCATransform3D:transform3d1];
NSValue *value2 = [NSValue valueWithCATransform3D:transform3d2];
NSValue *value3 = [NSValue valueWithCATransform3D:transform3d3];
NSValue *value4 = [NSValue valueWithCATransform3D:transform3d4];
NSValue *value5 = [NSValue valueWithCATransform3D:transform3d5];
keyFrame.values = @[value1, value2, value3, value4, value5];
keyFrame.duration = 20;
keyFrame.repeatCount = 100000;
[image.layer addAnimation:keyFrame forKey:nil];
// 声明一个动画
CATransition *animation = [CATransition animation];
// 设置动画时间
animation.duration = 1.0f;
// 设置动画动画的执行效果 慢--快--慢的效果
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
// 设置动画的样式
// animation.type = kCATransitionMoveIn;
animation.type = @"cube"; // 私有API中的立方体滚动
// 设置动画的移入的位置 从左、从右、从上、从下
// animation.subtype = kCATransitionFromTop;
animation.subtype = @"toLeft"; // 私有API中的从左面滚动
// 给animatedView添加动画
[animatedView.layer addAnimation:animation forKey:nil];
// 旋转
CGAffineTransform transform = CGAffineTransformMakeRotation(M_PI); // 只能旋转一次
CGAffineTransform transform2 = CGAffineTransformRotate(animatedView.transform, M_PI_4); // 可以多次旋转
// 缩小,放大
CGAffineTransform transform3 = CGAffineTransformMakeScale(1.2f, 1.2f); // 缩放一次
CGAffineTransform transform4 = CGAffineTransformScale(animatedView.transform, 0.9f, 0.9f); // 可以连续操作
// 移动
CGAffineTransform transform5 = CGAffineTransformMakeTranslation(12, 12);
CGAffineTransform transform6 = CGAffineTransformTranslate(animatedView.transform, 0, -120);
// 开始动画
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5f];
[animatedView setTransform:transform6];
[UIView commitAnimations];
// CABasicAnimation
CABasicAnimation *basicAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
CATransform3D transform3d1 = CATransform3DMakeTranslation(10, 10, 10); // 3D移动效果
CATransform3D transform3d11 = CATransform3DTranslate(transform3d1, 10, 10, 10);
CATransform3D transform3d2 = CATransform3DMakeRotation(M_PI, 0.0, 0.0, 1.0); // 3D旋转效果
CATransform3D transform3d22 = CATransform3DRotate(transform3d2, M_PI, 0.0, 0.0, 1.0);
CATransform3D transform3d3 = CATransform3DMakeScale(0.2f, 1.2f, 1.2f); // 3D缩放效果
CATransform3D transform3d33 = CATransform3DTranslate(transform3d2, 0.0, 0.0, 0.0);
basicAnimation.toValue = [NSValue valueWithCATransform3D:transform3d1];
basicAnimation.removedOnCompletion = YES; // 动画结束后去除动画
basicAnimation.duration = 0.5f; // 设置动画时间
basicAnimation.cumulative = NO;
basicAnimation.repeatCount = 0; // 循环次数
[animatedView.layer addAnimation:basicAnimation forKey:nil];
// 只修改坐标的X轴
CABasicAnimation *basicAnimation2 = [CABasicAnimation animationWithKeyPath:@"position.x"];
basicAnimation2.duration = 0.5f;
basicAnimation2.toValue = [NSNumber numberWithFloat:130];
[animatedView.layer addAnimation:basicAnimation2 forKey:nil];
// 修改position
CABasicAnimation *basicAnimation3 = [CABasicAnimation animationWithKeyPath:@"position"];
basicAnimation3.duration = 0.5f;
basicAnimation3.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
[animatedView.layer addAnimation:basicAnimation3 forKey:nil];
// 修改透明度
CABasicAnimation *basicAnimation4 = [CABasicAnimation animationWithKeyPath:@"opacity"];
basicAnimation4.duration = 0.5f;
// 设置透明度的变化
basicAnimation4.toValue = [NSNumber numberWithFloat:0.0f];
// 添加上动画
[animatedView.layer addAnimation:basicAnimation4 forKey:nil];
// 动画组
// 初始化一个动画组
CAAnimationGroup *animationGroup = [CAAnimationGroup animation];
// 动画组中的第一个动画
CABasicAnimation *basicAnimation5 = [CABasicAnimation animationWithKeyPath:@"opacity"];
basicAnimation5.duration = 0.5f;
basicAnimation5.toValue = [NSNumber numberWithFloat:0.0f];
// 动画组中的第二个动画
CABasicAnimation *basicAnimation6 = [CABasicAnimation animationWithKeyPath:@"position"];
basicAnimation6.duration = 0.5f;
basicAnimation6.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
animationGroup.animations = @[basicAnimation5, basicAnimation6];
// 设置动画组的时间
animationGroup.duration = 0.5;
// 添加上
[animatedView.layer addAnimation:animationGroup forKey:nil];
CAKeyframeAnimation *keyframeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
// 运动路径的几个点
NSValue *value1 = [NSValue valueWithCGPoint:CGPointMake(320/2, 0)];
NSValue *value2 = [NSValue valueWithCGPoint:CGPointMake(320, 548/2)];
NSValue *value3 = [NSValue valueWithCGPoint:CGPointMake(320/2, 548)];
NSValue *value4 = [NSValue valueWithCGPoint:CGPointMake(0, 548/2)];
NSValue *value5 = [NSValue valueWithCGPoint:CGPointMake(320/2, 0)];
// 移动到的四个点
keyframeAnimation.values = @[value1, value2, value3, value4, value5, value4, value3, value2, value1];
// 设置速度
keyframeAnimation.duration = 1.0f;
// 设置移动的形式
keyframeAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
keyframeAnimation.repeatCount = 10000000.0f;
// 添加上
[animatedView.layer addAnimation:keyframeAnimation forKey:nil];
IOS QuartzCore核心动画框架的更多相关文章
- iOS学习——核心动画之Layer基础
iOS学习——核心动画之Layer基础 1.CALayer是什么? CALayer我们又称它叫做层.在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这 ...
- iOS学习——核心动画
iOS学习——核心动画 1.什么是核心动画 Core Animation(核心动画)是一组功能强大.效果华丽的动画API,无论在iOS系统或者在你开发的App中,都有大量应用.核心动画所在的位置如下图 ...
- iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类
核心动画的详解介绍:CAAnimation(抽象类) 1.核心动画基本概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! 使用它 ...
- iOS之核心动画(Core Animation)
Core Animation,中文翻译为核心动画,它是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍.也就是说,使用少量的代码就可以实现非常强大的功能. Core ...
- iOS基础 - 核心动画
一.核心动画 l 核心动画基本概念 l 基本动画 l 关键帧动画 l 动画组 l 转场动画 l Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事 ...
- iOS之核心动画
.将动画的所有方法封装到一个类里面 MyCAHelper.h #import <Foundation/Foundation.h> #import <QuartzCore/Quartz ...
- iOS:核心动画之基本动画CABasicAnimation
基本动画,是CAPropertyAnimation的子类 属性说明: fromValue:keyPath相应属性的初始值 toValue:keyPath相应属性的结束值 动画过程说明: 随着动画的进行 ...
- iOS:核心动画具体的类和协议的介绍
核心动画类:CAAnimation.CAPropertyAnimation.CABasicAnimation.CAKeyframeAnimation.CATransition.CAAnimationG ...
- iOS开发-核心动画随笔
核心动画可以让View旋转,缩放,平移(主要是操作View的layer(层)属性)但是核心动画改变的位置不是真实的位置,一切都是假象所以有时候要用到其他动画,如UIView本来封装的动画,还有定时器 ...
随机推荐
- Python自带的日志模块logging的使用
import logging # 创建一个logger logger = logging.getLogger('cmccLogger') logger.setLevel(logging.DEB ...
- UITableView学习总结
一.UITableView概述 UITableView继承自UIScrollView,可以表现为Plain和Grouped两种风格. UITableView有两个Delegate分别为:dataSou ...
- Android热门网络框架Volley详解
.Volley简介 volley的英文意思为‘群发’.‘迸发’.Volley是2013年谷歌官方发布的一款Android平台上的网络通信库.Volley非常适合一些数据量不大,但需要频繁通信的网络操作 ...
- MVC打包压缩JS&CSS文件调试时过滤了一些文件
BundleTable.这个确实是比较好用,打包并压缩了CSS,使之加载时减少流量. 但是在调试的时候会疑问为何有很多JS,CSS文件无法打包,其实是因为调试时VS自动过滤了如下文件: 后台跟踪了 ...
- HTML5 文件处理之FileAPI简介整理
在众多HTML5规范中,有一部分规范是跟文件处理有关的,在早期的浏览器技术中,处理小量字符串是js最擅长的处理之一.但文件处理,尤其是二进制文件处理,一直是个空白.在一些情况下,我们不得不通过Flas ...
- eclipse alt + '/' not working.
searching for google,I observed that the 'content assist' shortcut key was take placed with 'ctrl + ...
- ssh框架配置事务管理器
http://blog.163.com/zsq303288862@126/blog/static/9374596120111182446727/
- 关于ASP.NET控件方面的学习(恢复版)
前段时间没有把学习中的遇到的问题和解决方法详细总结,今天整理整理.. 鉴于我们这个研究生论文管理系统是小组形式,所以说虽然我只负责数据库,但是其它部分也多少有些工作方面的涉及,最后感谢各位同学和老师的 ...
- iOS6以后的单个控制器横竖屏显示以及旋转屏控制技巧,附带iOS8以后显示电池状态栏
一.在应用中从竖屏模式强制转换为横屏模式 第一种方法:通过模态弹出视图的方式,使得特定ViewController坚持特定的interfaceOrientation(1)iOS6之后提供了这样一个方法 ...
- if....else
if....else语句是在特定的条件下成立执行的代码,在不成立的时候执行else后面的代码. 语法: if(条件) {条件成立执行}else{条件不成立执行} 下面来写一个简单的实例 以考试成绩为例 ...