CoreAnimation--CALayer的动画

核心动画中所有类都遵守CAMediaTiming

CAAnaimation和CAPropertyAnimation都是抽象类,本身不具备动画效果,必须用它的子类才有动画效果。

CAAnimationGroup是个动画组,可以同时进行缩放,旋转。

CABasicAnimation基本动画,做一些简单效果。

CAKeyframeAnimation帧动画,做一些连续的流畅的动画。

CATransition是转场动画,界面之间跳转都可以用转场动画。

ios layer 动画-(transform.scale篇)

x轴缩放:
CABasicAnimation *theAnimation;
theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.scale.x"];
theAnimation.duration=8;
theAnimation.removedOnCompletion = YES;
theAnimation.fromValue = [NSNumber numberWithFloat:1];
theAnimation.toValue = [NSNumber numberWithFloat:0.5];
 [yourView.layer addAnimation:theAnimation forKey:@"animateTransform"];

y轴缩放:
CABasicAnimation *theAnimation;
theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.scale.y"];
theAnimation.duration=8;
theAnimation.removedOnCompletion = YES;
theAnimation.fromValue = [NSNumber numberWithFloat:1];
theAnimation.toValue = [NSNumber numberWithFloat:0.5];
 [yourView.layer addAnimation:theAnimation forKey:@"animateTransform"];

x轴,y轴同时按比例缩放:
CABasicAnimation *theAnimation;
theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.scale"];
theAnimation.duration=8;
theAnimation.removedOnCompletion = YES;
theAnimation.fromValue = [NSNumber numberWithFloat:1];
theAnimation.toValue = [NSNumber numberWithFloat:0.5];
 [yourView.layer addAnimation:theAnimation forKey:@"animateTransform"];

以上缩放是以view的中心点为中心缩放的,如果需要自定义缩放点,可以设置卯点:
//中心点
[yourView.layer setAnchorPoint:CGPointMake(0.5, 0.5)];

//左上角
[yourView.layer setAnchorPoint:CGPointMake(0, 0)];

//右下角
[yourView.layer setAnchorPoint:CGPointMake(1, 1)];

ios layer 动画-(transform.rotation篇)

x轴旋转:
CABasicAnimation *theAnimation;
theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.rotation.x"];
theAnimation.duration=8;
theAnimation.removedOnCompletion = YES;
theAnimation.fromValue = [NSNumber numberWithFloat:0];
theAnimation.toValue = [NSNumber numberWithFloat:3.1415926];
 [yourView.layer addAnimation:theAnimation forKey:@"animateTransform"];

y轴旋转:
CABasicAnimation *theAnimation;
theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.rotation.y"];
theAnimation.duration=8;
theAnimation.removedOnCompletion = YES;
theAnimation.fromValue = [NSNumber numberWithFloat:0];
theAnimation.toValue = [NSNumber numberWithFloat:3.1415926];
 [yourView.layer addAnimation:theAnimation forKey:@"animateTransform"];

z轴旋转:
CABasicAnimation *theAnimation;
theAnimation=[CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
theAnimation.duration=8;
theAnimation.removedOnCompletion = YES;
theAnimation.fromValue = [NSNumber numberWithFloat:0];
theAnimation.toValue = [NSNumber numberWithFloat:3.1415926];
 [yourView.layer addAnimation:theAnimation forKey:@"animateTransform"];

以上缩放是以view的中心点为中心缩放的,如果需要自定义缩放点,可以设置卯点:
//中心点
[yourView.layer setAnchorPoint:CGPointMake(0.5, 0.5)];

//左上角
[yourView.layer setAnchorPoint:CGPointMake(0, 0)];

//右下角
[yourView.layer setAnchorPoint:CGPointMake(1, 1)];

可设参数:

theAnimation.repeatCount = 0;
theAnimation.autoreverses = NO;

旋转的另一种实现:(以下代码绕z轴旋转180度)
    [self.topViewController.view.layer setAnchorPoint:CGPointMake(0.5, 0.5)];
    [self.topViewController.view.layer setTransform:CATransform3DMakeRotation(0, 0, 0, 1)];
    [UIView animateWithDuration:8 delay:0.0f options:UIViewAnimationOptionAllowUserInteraction | UIViewAnimationCurveEaseIn animations:^{
        [self.topViewController.view.layer setTransform:CATransform3DMakeRotation(3.1415926, 0, 0, 1)];
    } completion:^(BOOL finished) {
    }];

CATransition 过渡动画

CATransition *animation = [CATransition animation];

animation.duration = 0.3;

animation.type = @"cube";  //转场动画type见后文

animation.subtype = kCATransitionFromLeft;

[[self.tableView layer] addAnimation:animation forKey:@"myAnimation"];

  animation.fillMode = kCAFillModeBackwards;
  animation.startProgress = 0.01;
  animation.endProgress = 0.99;
使用过渡动画,实现在同一个view上,左推,右推等各种动画,节省一个view;

参数说明:

setType:可以返回四种类型:

  kCATransitionFade淡出

  kCATransitionMoveIn覆盖原图

  kCATransitionPush推出

  kCATransitionReveal底部显出来

setSubtype:也可以有四种类型:

  kCATransitionFromRight;

  kCATransitionFromLeft(默认值)

  kCATransitionFromTop;

  kCATransitionFromBottom

[animation setType:@"type类型"]; 可用的type类型主要有:

  pageCurl 向上翻一页

  pageUnCurl 向下翻一页

  rippleEffect 滴水效果

  suckEffect 收缩效果,如一块布被抽走

  cube 立方体效果

  oglFlip 上下翻转效果

/** 转场动画type一览表 **/

fade 交叉淡化过渡

push 新视图把旧视图推出去

moveIn 新视图移到旧视图上面

reveal 将旧视图移开,显示下面的新视图

cube 立方体翻滚效果

oglFlip 上下左右翻转效果

suckEffect 收缩效果,如一块布被抽走

rippleEffect 水滴效果

pageCurl  向上翻页效果

pageUnCurl  向下翻页效果

cameraIrisHollowOpen 相机镜头打开效果

cameraIrisHollowClose 相机镜头关闭效果

转自:http://blog.163.com/it__man/blog/static/137199904201301722556447/

转载于:https://www.cnblogs.com/stevenwuzheng/p/5543106.html

CoreAnimation--CALayer的动画相关推荐

  1. CoreAnimation (CALayer 动画)

    CoreAnimation基本介绍: CoreAnimation动画位于iOS框架的Media层 CoreAnimation动画实现需要添加QuartzCore.Framework CoreAnima ...

  2. iOS 动画之CoreAnimation(CALayer)

    CoreAnimation基本介绍 CoreAnimation动画位于iOS框架的Media层 CoreAnimation动画实现需要添加QuartzCore.Framework CoreAnimat ...

  3. Swift CoreAnimation ---- CALayer的呈现层和模型层

    前言 自己的语言能力有限,借鉴别人的文章理解并写下这篇文章. 参考链接:iOS CoreAnimation专题--原理篇(三) CALayer的模型层与展示层 - 知乎 使用Swift语言,深入CAL ...

  4. iOS:CALayer核心动画层

    CALayer:核心动画层 简介: Core Animation 是跨平台的,支持iOS环境和Mac OS X环境 学习核心动画之前,需要先理解CALayer,因为核心动画操作的对象不是UIView, ...

  5. CoreAnimation中layer动画闪烁的原因及解决

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 网上有一段Core Animation层动画的例子,是将vie ...

  6. CALayer的动画跟一个播放音乐的demo

    自动布局 #import "ViewController.h" #import <AVFoundation/AVFoundation.h> @interface Vie ...

  7. iOS开发CoreAnimation解读之一——初识CoreAnimation核心动画编程

    iOS开发CoreAnimation解读之一--初识CoreAnimation核心动画编程 一.引言 二.初识CoreAnimation 三.锚点对几何属性的影响 四.Layer与View之间的关系 ...

  8. ios开发——使用CALayer和Core Animation做动画效果

    一. CALayer (一). CALayer简介 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView,其实UIV ...

  9. CALayer与iOS动画 讲解及使用

    iOS CALayer与iOS动画 讲解及使用 关于CoreAnimation 初识CALayer CALayer CAAnimation CAMediaTiming UIView与CALayer动画 ...

  10. iOS CALayer动画原理分析

    一.引出问题 在开始分析原理之前,我们先来看一个问题: 我们都知道 UIView与 CALayer之间的关系,通俗的来说,UIView内部封装了一个 CALayer, 其中 CALayer负责展示UI ...

最新文章

  1. 看完这些能控制大脑的寄生虫,你会怀疑人类!
  2. leetcode-79-单词搜索(用dfs解决)
  3. 动态调频DVFS_转
  4. 048_Calendar日历
  5. 前端学习(1912)vue之电商管理系统电商系统之调用api完成删除操作
  6. Codeforces Round #FF
  7. MongoDB Replication
  8. 这个例子主要展示了通过点击button实现viewflipper页面切换
  9. c#向MFC窗体发送消息
  10. tornado基本使用一
  11. python中for循环和while循环的区别_Python中for循环语句和while循环语句有何不同
  12. python最简单的爬取邮箱地址怎么写_用python60行代码写一个简单的笔趣阁爬虫!三分一章?...
  13. readelf的使用
  14. notepad html 自动格式化代码,notepad++格式化html代码
  15. 一次完整的 Http 请求过程
  16. 微信商户中查看 appid
  17. 如何在Windows下使用DOS命令进入MySQL数据库?
  18. mysql历史数据自动归档
  19. 30分钟学会XAML
  20. HACK RF学习之旅记录3——安装WIN10+Ubuntu双系统

热门文章

  1. Struts2中Action之ResultType
  2. MySQL表注释和字段注释
  3. 为什么用 抽象类,接口
  4. 利用OpenCV的级联分类器类CascadeClassifier和Haar特征实现人脸区域的检测
  5. php在线考试自动批卷_php网络在线考试组卷系统
  6. MacBook各个快捷键符号
  7. CloudStack的部署架构概览
  8. acwing算法题--直方图中最大的矩形
  9. ls命令显示结果图解
  10. Binder 驱动详解(下)