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. Office 2010

    1.Office Professional Plus 2010: 6QFDX-PYH2G-PPYFD-C7RJM-BBKQ8 BDD3G-XM7FB-BD2HM-YK63V-VQFDK 2.Offic ...

  2. MFC串口通信

    1.串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式). 同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程) ...

  3. 12个非常有用的JavaScript小技巧

    在这篇文章中将给大家分享12个有关于JavaScript的小技巧.这些小技巧可能在你的实际工作中或许能帮助你解决一些问题. 使用!!操作符转换布尔值 有时候我们需要对一个变量查检其是否存在或者检查值是 ...

  4. C# 连接 数据库的时候 出现 程序出现异常"尝试读取或写入受保护的内存这通常指示其他内存已损坏" 错误

    今天调试程序的时候出现了毫无征兆的就出现了如标题所述 的错误,我之前的程序 都运行的好好的,网上 找了 好多帖子 ,都是没有找到解决方案,最后 一个问一个同事 不知道他在哪儿找到了一个解决方案,说是 ...

  5. nginx和apache的优缺点比较

    简单的说apache httpd和nginx都是web服务器,但两者适应的场景不同,也就是两者专注于解决不同的问题.apache httpd:稳定.对动态请求处理强,但同时高并发时性能较弱,耗费资源多 ...

  6. JDBC、Hibernate、Java类型对照表

    Hibernate映射类型 java类型 标准SQL类型 integer java.lang.Integer integer long java.lang.Long bigint short java ...

  7. Android自学学习资料

    最近在自学Android编程,在网上看了一些博客和视频教程,觉得比较好的分享一下,继续学习,gangbade~ 国外android官网总是出现连不上的情况,如果你不想FQ的话,这里github上可以直 ...

  8. WIN下和LINUX动态库的区别

    **************************************************************************************************** ...

  9. ACM学习-POJ-1143-Number Game

    菜鸟学习ACM,纪录自己成长过程中的点滴. 学习的路上,与君共勉. ACM学习-POJ-1143-Number Game Number Game Time Limit: 1000MS   Memory ...

  10. hdu 4649 Professor Tian 多校联合训练的题

    这题起初没读懂题意,悲剧啊,然后看了题解写完就AC了 题意是给一个N,然后给N+1个整数 接着给N个操作符(只有三种操作  即  或 ,与 ,和异或 |   &  ^ )这样依次把操作符插入整 ...