CALayer是UIView可以响应事件。一般来说,layer可以有两种用途:一是对view相关属性的设置,包括圆角、阴影、边框等参数;二是实现对view的动画操控。

因此对一个view进行core animation动画,本质上是对该view的.layer进行动画操纵。

1.CALayer常见属性

新建图层

CALayer * layer = [CALayer layer];

图层颜色

layer.backgroundColor = [UIColor redColor].CGColor;

图层大小

layer.bounds = CGRectMake(0, 0, 100, 100);

图层锚点

layer.anchorPoint = CGPointMake(0, 0);

图层位置

layer.position = self.view.center;

圆角半径

layer.cornerRadius = 50;

边框宽度

layer.borderWidth = 2;

边框颜色

layer.borderColor = [UIColor blackColor].CGColor;

添加图层

[self.view.layer addSublayer:layer];

2.CALayer有2个非常重要的属性:position和anchorPoint

@property CGPoint position;

用来设置CALayer在父层中的位置

以父层的左上角为原点(0, 0)

@property CGPoint anchorPoint;

称为“定位点”、“锚点”

决定着CALayer身上的哪个点会在position属性所指的位置

以自己的左上角为原点(0, 0)

它的x、y取值范围都是0~1,默认值为(0.5, 0.5)

layer.anchorPoint = CGPointMake(0, 0);

layer.anchorPoint = CGPointMake(0.5, 0.5);

layer.anchorPoint = CGPointMake(1, 1);

3.改变transform的动画

旋转

layer.transform = CATransform3DRotate(_layer.transform, 10/180.0*M_PI, 1, 1, 1);

放大缩小

layer.transform = CATransform3DScale(_layer.transform, 2, 2, 2);

平移

layer.transform = CATransform3DTranslate(_layer.transform, 10, 10, 0);

4.CABasicAnimation

     CALayer *Layer = [[CALayer alloc] init];

    Layer.backgroundColor = [UIColor blueColor].CGColor;

    Layer.frame = CGRectMake(100, 100, 50, 50);

    Layer.cornerRadius = 10;

    [self.view.layer addSublayer:scaleLayer];

    

    CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

    scaleAnimation.fromValue = [NSNumber numberWithFloat:1.0];

    scaleAnimation.toValue = [NSNumber numberWithFloat:1.5];

    scaleAnimation.fillMode = kCAFillModeForwards;最后以什么填充

    scaleAnimation.repeatCount = MAXFLOAT;重复次数

    scaleAnimation.duration = 1;

 

    [Layer addAnimation:scaleAnimation forKey:nil];

常用的属性有

  transform

  transform.ratation.z

  opacity

  position

5.CAAnimationGroup

CALayer *Layer = [[CALayer alloc] init];

Layer.backgroundColor = [UIColor blueColor].CGColor;

Layer.frame = CGRectMake(100, 100, 50, 50);

Layer.cornerRadius = 10;

[self.view.layer addSublayer:Layer];

放大

CABasicAnimation *scaleAnimation = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

scaleAnimation.fromValue = [NSNumber numberWithFloat:1.0];

scaleAnimation.toValue = [NSNumber numberWithFloat:1.5];

渐变

CABasicAnimation * opacityAnimation = [CABasicAnimation animationWithKeyPath:@"opacity"];

opacityAnimation.fromValue = @1;

opacityAnimation.toValue = @0;

移动

CABasicAnimation *moveAnimation = [CABasicAnimation animationWithKeyPath:@"position"];

moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)];

旋转

CABasicAnimation *rotateANimation = [CABasicAnimation animationWithKeyPath:@"transform"];

rotateANimation.fromValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];

rotateANimation.toValue = [NSValue valueWithCATransform3D:CATransform3DRotate(Layer.transform, M_PI, 0, 0, 1)];

CAAnimationGroup * group = [CAAnimationGroup animation];

group.removedOnCompletion = NO;

group.fillMode = kCAFillModeForwards;

group.repeatCount = MAXFLOAT;

group.duration = 1;

group.animations =@[scaleAnimation,opacityAnimation,moveAnimation,rotateANimation];

[Layer addAnimation:group forKey:nil];

6.补充

再旋转中,上边的写法转换成弧度之后不能转多圈,下面实现转多圈

CABasicAnimation *zrotateANimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];

zrotateANimation.fromValue = [NSNumber numberWithFloat:0];

zrotateANimation.toValue = [NSNumber numberWithFloat:M_PI * 4.0];

CALayer CABasicAnimation的更多相关文章

  1. iOS开发笔记10:圆点缩放动画、强制更新、远程推送加语音提醒及UIView截屏

    1.使用CAReplicatorLayer制作等待动画 CALayer+CABasicAnimation可以制作很多简单的动画效果,之前的博客中介绍的“两个动画”,一个是利用一张渐变色图片+CABas ...

  2. ios 关于动画用法的总结

      #import "FirstVC.h" @implementation FirstVC /*     创建xib过程     1 创建xib(名字和类名相同)     2 文件 ...

  3. iOS Animation具体解释

    iOS Animation具体解释 本篇仅仅要解说iOS中动画的使用. Animtion主要分为两类:UIView动画和CoreAnimation动画. UIView动画有UIView属性动画,UIV ...

  4. CALayer, CoreGraphics与CABasicAnimation介绍

    今天我们来看一下CALayer.CoreGraphics和CABasicAnimation.这些东西在处理界面绘制.动画效果上非常有用. 本篇博文就讲介绍CALayer的基本概念,使用CoreGrap ...

  5. 之一:CABasicAnimation - 基本动画

    嗷呜嗷呜嗷呜 // 将视图作为属性方便后面执行多个不同动画 _myView = [[UIView alloc] init]; _myView.layer.position = CGPointMake( ...

  6. Quartz2D复习(四) --- 图层CALayer和动画CAAnimation

    1.CALayer 1).在ios中,能看得见摸得着的东西基本上都是UIView, 比如按钮.文本标签.文本输入框.图标等,这些都是UIView 2).UIView之所以能显示在屏幕上,完全是因为它内 ...

  7. iOS - CABasicAnimation

    代码实例: [1] - (void)pulseClick { //!> 宽和高等比例转换 CABasicAnimation * pulse = [CABasicAnimation animati ...

  8. iOS开发——UI进阶篇(十七)CALayer,核心动画基本使用

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

  9. CABasicAnimation animationWithKeyPath 一些规定的值

    CABasicAnimation animationWithKeyPath Types When using the ‘CABasicAnimation’ from the QuartzCore Fr ...

随机推荐

  1. C# Winform WindowsMediaPlayer控件

    要做一个视频无缝切换的程序,所谓无缝就是在一个视频结束时立即开始另一个视频,中间不要有切换的黑屏 实现思路是放两个wmp播放控件,其中每个时刻只有一个在播放,另外一个处于暂停状态,并隐藏 当一个视频播 ...

  2. Android生命周期注意事项

                                    生命周期图解     以下英文引用全部来自google官方文档说明,方便理解. onCreate (Bundle savedInstan ...

  3. uva 12100 Printer Queue

    The only printer in the computer science students' union is experiencing an extremely heavy workload ...

  4. C++程序设计实践指导1.15找出回文数改写要求实现

    改写要求1:用单链表实现 #include <cstdlib> #include <iostream> using namespace std; struct LinkNode ...

  5. (原)ubuntu16中简单的使用google的protobuf

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5804395.html 参考网址: http://www.cnblogs.com/luosongchao ...

  6. 利用反射动态构成sql语句

    class Program     {         static void Main(string[] args)         {             People p = new Peo ...

  7. Java中的IO学习总结

    今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬盘.内存.键盘等处理 ...

  8. MySQL数据库SQL层级优化

    本篇主涉及MySQL SQL Statements层面的优化. 首先,推荐一个链接为万物之始:http://dev.mysql.com/doc/refman/5.0/en/optimization.h ...

  9. Lucene学习总结之三:Lucene的索引文件格式(1)

    Lucene的索引里面存了些什么,如何存放的,也即Lucene的索引文件格式,是读懂Lucene源代码的一把钥匙. 当我们真正进入到Lucene源代码之中的时候,我们会发现: Lucene的索引过程, ...

  10. 用git提交代码步骤

    1.git add XXXX2.git commit - 'xxx'3.git stash4. //git pull --rebase 4. git rebase origin/develop git ...