iOS开发UI篇—CAlayer层的属性

一、position和anchorPoint

1.简单介绍

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)

2.图示

anchorPoint

它的取值为0~1

红色图层的anchorPoint为(0,0)

红色图层的anchorPoint为(0.5,0.5)

红色图层的anchorPoint为(1,1)

红色图层的anchorPoint为(0.5,0)

position和anchorPoint

添加一个红色图层到绿色图层上,红色图层显示到什么位置,由position属性决定

假设红色图层的position是(100,100)

  到底把红色图层的哪个点移动到(100,100)的坐标位置,锚点。

  红色图层的锚点是(0,0)

红色图层的锚点是(0.5,0.5)

红色图层的锚点是(1,1)

红色图层的锚点是(0.5,0)

3.代码示例

(1)没有设置锚点。默认的锚点位置为(0.5,0.5)

 1 //
 2 //  YYViewController.m
 3 // 03-锚点等属性  4 //  5 // Created by apple on 14-6-21.  6 // Copyright (c) 2014年 itcase. All rights reserved.  7 //  8  9 #import "YYViewController.h" 10 11 @interface YYViewController () 12 13 @end 14 15 @implementation YYViewController 16 17 - (void)viewDidLoad 18 { 19  [super viewDidLoad]; 20 //创建图层 21 CALayer *layer=[CALayer layer]; 22 //设置图层的属性 23 layer.backgroundColor=[UIColor redColor].CGColor; 24 layer.bounds=CGRectMake(0, 0, 100, 100); 25 //添加图层 26  [self.view.layer addSublayer:layer]; 27 28 } 29 30 @end

显示效果:

         

(1)设置锚点位置为(0,0)

 1 - (void)viewDidLoad
 2 {
 3  [super viewDidLoad];  4 //创建图层  5 CALayer *layer=[CALayer layer];  6 //设置图层的属性  7 layer.backgroundColor=[UIColor redColor].CGColor;  8 layer.bounds=CGRectMake(0, 0, 100, 100);  9 //设置锚点为(0,0) 10 layer.anchorPoint=CGPointZero; 11 //添加图层 12  [self.view.layer addSublayer:layer]; 13 } 14 @end

显示效果:

二、隐式动画

1.简单说明

每一个UIView内部都默认关联着一个CALayer,我们可用称这个Layer为Root Layer(根层)

所有的非Root Layer,也就是手动创建的CALayer对象,都存在着隐式动画

什么是隐式动画?

当对非Root Layer的部分属性进行修改时,默认会自动产生一些动画效果

而这些属性称为Animatable Properties(可动画属性)

列举几个常见的Animatable Properties:

bounds:用于设置CALayer的宽度和高度。修改这个属性会产生缩放动画

backgroundColor:用于设置CALayer的背景色。修改这个属性会产生背景色的渐变动画

position:用于设置CALayer的位置。修改这个属性会产生平移动画

2.代码示例

 1 //
 2 //  YYViewController.m
 3 // 04-隐式动画  4 //  5 // Created by apple on 14-6-21.  6 // Copyright (c) 2014年 itcase. All rights reserved.  7 //  8  9 #import "YYViewController.h" 10 11 @interface YYViewController () 12 @property(nonatomic,strong)CALayer *layer; 13 @end 14 15 @implementation YYViewController 16 17 - (void)viewDidLoad 18 { 19  [super viewDidLoad]; 20 //创建图层 21 CALayer *mylayer=[CALayer layer]; 22 //设置图层属性 23 mylayer.backgroundColor=[UIColor brownColor].CGColor; 24 mylayer.bounds=CGRectMake(0, 0, 150, 100); 25 //显示位置 26 mylayer.position=CGPointMake(100, 100); 27 mylayer.anchorPoint=CGPointZero; 28 mylayer.cornerRadius=20; 29 //添加图层 30  [self.view.layer addSublayer:mylayer]; 31 self.layer=mylayer; 32 } 33 34 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 35 { 36 //隐式动画 37 self.layer.bounds=CGRectMake(0, 0, 200, 60); 38 self.layer.backgroundColor=[UIColor yellowColor].CGColor; 39 } 40 @end

效果:

        

关闭隐式动画:

1     [CATransaction begin];
2     [CATransaction setDisableActions:YES];
3     //隐式动画 4 self.layer.bounds=CGRectMake(0, 0, 200, 60); 5 self.layer.backgroundColor=[UIColor yellowColor].CGColor; 6 [CATransaction commit];

3.如何查看CALayer的某个属性是否支持隐式动画?

  可以查看头文件,看有没有Animatable,如果有则表示支持。

也可以查看官方文档

文档中标明的这些属性都是支持隐式动画的

转载自:http://www.cnblogs.com/wendingding/p/3800736.html

转载于:https://www.cnblogs.com/wsnb/p/4878469.html

CAlayer层的属性相关推荐

  1. [分享]iOS开发-UI篇:CAlayer层的属性

    iOS开发UI篇-CAlayer层的属性 一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property ...

  2. iOS开发UI 篇—CAlayer层的属性

    一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position; 用来设 ...

  3. AE基础教程(21)——第21章 层的属性简介

    层的属性简介 以文本层为例: 新建合成--新建文本

  4. CALayer学习--contentsCenter属性

    开头 为什么我要写就contentsCenter这个属性做一个记录呢?!因为我在学习这个属性的时候,理解了好久,到现在,有点头绪,记录下来,希望有帮助. 缘由 偶然看到gitbook上有iOS Cor ...

  5. 关于CALayer的contentsGravity属性

    运行环境 Xcode 7.3 CALyer有一个 contentsGravity属性,它是用来改变图层中的内容的位置和尺寸,如下头文件所示 在没有给CALyer设置contentsGravity之前 ...

  6. iOS--开发从入门到精通

    前言: 从事iOS开发已有几个年头,平时对于iOS开发的知识积累都比较碎片化,为了更好的掌握开发技能, 索性整理iOS开发的知识体系,以便于后面进阶成iOS高级开发工程师. 一.iOS开发基础 开发设 ...

  7. iOS_核心动画(二)

    目 录: 一.Core Animation开发步骤 二.Core Animation的继承结构 三.CAAnimation常用的属性 四.CAPropertyAnimation(属性动画) 五.CAB ...

  8. iOS之POP动画使用和实战

    - POP是一个来自于Facebook,在iOS与OSX上通用的极具扩展性的动画引擎.它在基本的静态动画的基础上增加的弹簧动画与衰减动画,使之能创造出更真实更具物理性的交互动画. - Pop Anim ...

  9. 文顶顶iOS开发博客链接整理及部分项目源代码下载

    网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找.如果你是初学者,在学习了斯坦福iOS7公开课 ...

最新文章

  1. 常用MySQL函数存储过程_解析MySQL存储过程、常用函数代码
  2. jenkins执行shell脚本,找不到环境变量
  3. linux make makefile 内置变量 默认变量
  4. matlab积分与绘图
  5. python鸡兔同笼编程输出不存在合理答案_Python 解答鸡兔同笼和五家共井问题
  6. 神策数据完成B轮融资1100万美元,DCM领投、红杉跟投
  7. springboot抑制log中的info信息
  8. time series 时间序列 | fractional factorial design 部分要因试验设计
  9. 【小白的CFD之旅】22 好网格与坏网格
  10. Pytorch register_forward_hook()简单用法
  11. 我爱免费之FreeFileSync文件夹同步软件
  12. flex blazeds java_flex blazeds连接java
  13. ECLIPSE软件安装MyBatis插件 MyBatis Generator
  14. 纠错码专题——线性分组码(1)
  15. 根据单词列表通过网络下载单词发音
  16. BlazeDS集成Flex+Tomcat开发J2EE模块整合实例
  17. 科技部:中国131家独角兽企业 名单文字版
  18. Shader学习7——法线贴图
  19. AcWing 1191. 家谱树 题解(拓扑排序)
  20. 347.前K个高频元素 C++

热门文章

  1. uiautomator的坑和AAPT命令方式启动一个应用程序
  2. CocoaPods 安装和使用
  3. MySql命令行基本操作
  4. php static方法的作用是什么,php static方法指的是什么
  5. docker启动odoo提示module没有安装_Ubuntu20.04通过docker安装微信
  6. java的string访问某个元素_C#深究.net常用的23种设计模式之访问者模式(Vistor Pattern)...
  7. 计算机科学技术的教育应用论文,浅谈计算机科学技术在计算机教学中的应用论文...
  8. ubuntu shell简介
  9. hadoop伪分布式搭建 java_hadoop2.2.0伪分布式搭建
  10. c语言中坐标xoy轴在哪里,用C语言在linux下获取鼠标指针的相对位置