CAlayer层的属性
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层的属性相关推荐
- [分享]iOS开发-UI篇:CAlayer层的属性
iOS开发UI篇-CAlayer层的属性 一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property ...
- iOS开发UI 篇—CAlayer层的属性
一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position; 用来设 ...
- AE基础教程(21)——第21章 层的属性简介
层的属性简介 以文本层为例: 新建合成--新建文本
- CALayer学习--contentsCenter属性
开头 为什么我要写就contentsCenter这个属性做一个记录呢?!因为我在学习这个属性的时候,理解了好久,到现在,有点头绪,记录下来,希望有帮助. 缘由 偶然看到gitbook上有iOS Cor ...
- 关于CALayer的contentsGravity属性
运行环境 Xcode 7.3 CALyer有一个 contentsGravity属性,它是用来改变图层中的内容的位置和尺寸,如下头文件所示 在没有给CALyer设置contentsGravity之前 ...
- iOS--开发从入门到精通
前言: 从事iOS开发已有几个年头,平时对于iOS开发的知识积累都比较碎片化,为了更好的掌握开发技能, 索性整理iOS开发的知识体系,以便于后面进阶成iOS高级开发工程师. 一.iOS开发基础 开发设 ...
- iOS_核心动画(二)
目 录: 一.Core Animation开发步骤 二.Core Animation的继承结构 三.CAAnimation常用的属性 四.CAPropertyAnimation(属性动画) 五.CAB ...
- iOS之POP动画使用和实战
- POP是一个来自于Facebook,在iOS与OSX上通用的极具扩展性的动画引擎.它在基本的静态动画的基础上增加的弹簧动画与衰减动画,使之能创造出更真实更具物理性的交互动画. - Pop Anim ...
- 文顶顶iOS开发博客链接整理及部分项目源代码下载
网上的iOS开发的教程很多,但是像cnblogs博主文顶顶的博客这样内容图文并茂,代码齐全,示例经典,原理也有阐述,覆盖面宽广,自成系统的系列教程却很难找.如果你是初学者,在学习了斯坦福iOS7公开课 ...
最新文章
- 常用MySQL函数存储过程_解析MySQL存储过程、常用函数代码
- jenkins执行shell脚本,找不到环境变量
- linux make makefile 内置变量 默认变量
- matlab积分与绘图
- python鸡兔同笼编程输出不存在合理答案_Python 解答鸡兔同笼和五家共井问题
- 神策数据完成B轮融资1100万美元,DCM领投、红杉跟投
- springboot抑制log中的info信息
- time series 时间序列 | fractional factorial design 部分要因试验设计
- 【小白的CFD之旅】22 好网格与坏网格
- Pytorch register_forward_hook()简单用法
- 我爱免费之FreeFileSync文件夹同步软件
- flex blazeds java_flex blazeds连接java
- ECLIPSE软件安装MyBatis插件 MyBatis Generator
- 纠错码专题——线性分组码(1)
- 根据单词列表通过网络下载单词发音
- BlazeDS集成Flex+Tomcat开发J2EE模块整合实例
- 科技部:中国131家独角兽企业 名单文字版
- Shader学习7——法线贴图
- AcWing 1191. 家谱树 题解(拓扑排序)
- 347.前K个高频元素 C++
热门文章
- uiautomator的坑和AAPT命令方式启动一个应用程序
- CocoaPods 安装和使用
- MySql命令行基本操作
- php static方法的作用是什么,php static方法指的是什么
- docker启动odoo提示module没有安装_Ubuntu20.04通过docker安装微信
- java的string访问某个元素_C#深究.net常用的23种设计模式之访问者模式(Vistor Pattern)...
- 计算机科学技术的教育应用论文,浅谈计算机科学技术在计算机教学中的应用论文...
- ubuntu shell简介
- hadoop伪分布式搭建 java_hadoop2.2.0伪分布式搭建
- c语言中坐标xoy轴在哪里,用C语言在linux下获取鼠标指针的相对位置