iOS:CALayer锚点的使用
CALayer层的位置主要和position和anchorPoint有关。其中它们在一起才能决定层在视图中的具体位置。
@property CGPoint position; //位置
@property CGPoint anchorPoint; //锚点
锚点的范围:(0.0~1.0)
具体的演示如下:
1、采用默认的锚点(0.5,0.5)
- (void)viewDidLoad {
[super viewDidLoad];
//添加子层
CALayer *subLayer = [[CALayer alloc]init];
//层的大小用bounds设置
subLayer.bounds = CGRectMake(, , , );
subLayer.backgroundColor = [[UIColor redColor]CGColor];
//层的位置是靠position和anchorPoint共同确定的
subLayer.position = CGPointMake(, );
[self.view.layer addSublayer:subLayer];
}
演示结果:anchorPoint锚点在红色矩形的中心处

2、采用自定义的锚点(0.0,0.0)
- (void)viewDidLoad {
[super viewDidLoad];
//添加子层
CALayer *subLayer = [[CALayer alloc]init];
//层的大小用bounds设置
subLayer.bounds = CGRectMake(, , , );
subLayer.backgroundColor = [[UIColor redColor]CGColor];
//层的位置是靠position和anchorPoint共同确定的
subLayer.position = CGPointMake(, );
//默认的锚点(0.5,0.5)
//subLayer.anchorPoint = CGPointMake(0, 0);
[self.view.layer addSublayer:subLayer];
}
演示结果:anchorPoint锚点在红色矩形的左上角转角这一点处

3、采用自定义的锚点(0.0,0.5)
- (void)viewDidLoad {
[super viewDidLoad];
//添加子层
CALayer *subLayer = [[CALayer alloc]init];
//层的大小用bounds设置
subLayer.bounds = CGRectMake(, , , );
subLayer.backgroundColor = [[UIColor redColor]CGColor];
//层的位置是靠position和anchorPoint共同确定的
subLayer.position = CGPointMake(, );
//默认的锚点(0.5,0.5)
subLayer.anchorPoint = CGPointMake(, 0.5);
[self.view.layer addSublayer:subLayer];
}
演示结果:anchorPoint锚点在红色矩形的上面一条边的中心处

4、采用自定义的锚点(0.5,0.0)
- (void)viewDidLoad {
[super viewDidLoad];
//添加子层
CALayer *subLayer = [[CALayer alloc]init];
//层的大小用bounds设置
subLayer.bounds = CGRectMake(, , , );
subLayer.backgroundColor = [[UIColor redColor]CGColor];
//层的位置是靠position和anchorPoint共同确定的
subLayer.position = CGPointMake(, );
//默认的锚点(0.5,0.5)
subLayer.anchorPoint = CGPointMake(0.5, );
[self.view.layer addSublayer:subLayer];
}
演示结果:anchorPoint锚点在红色矩形的左边一条边的中心处

总结:
可以看出,层的位置光凭position是无法确定的,每一次anchorPoint锚点的不同,层的位置也就发生的了改变。所以,层的位置是有position和anchorPoint锚点共同决定的。
iOS:CALayer锚点的使用的更多相关文章
- 变换CALayer锚点实现模拟时钟的动画
变换CALayer锚点实现模拟时钟的动画 变换锚点得需要一点理论知识,看下图就能明白:). https://developer.apple.com/library/ios/documentation/ ...
- IOS第18天(4,核心动画,时钟效果,定时器,图片旋转角度,CALayer 锚点,获取当前,小时,秒,分)
**** #import "HMViewController.h" // 每秒秒针转6度 #define perSecendA 6 // 每分钟分针转6度 #define perM ...
- iOS CALayer应用详解
跟着大神一起进步,本篇博客原文地址:http://blog.csdn.net/hello_hwc?viewmode=contents 一 CALayer是什么? Layers是绘图和动画的基础, L ...
- iOS - CALayer 绘图层
1.CALayer 绘图层 在 iOS 系统中,你能看得见摸得着的东西基本上都是 UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是 UIView.其实 UIView 之 ...
- IOS CALayer的属性和使用
一.CALayer的常用属性 1.@propertyCGPoint position; 图层中心点的位置,类似与UIView的center:用来设置CALayer在父层中的位置:以父层的左上角为原点( ...
- iOS - CALayer相关(CATransform3D)
一.图层的几何 图层的几何简单通俗,图层的所有几何属性(包括矩阵变换),都可以有隐式和显式动画. 图层几何的属性: 1.position是CGPoint值,她指定图层相对于她图层的位置,该值基于父图层 ...
- IOS CALayer(二)
UIview内部有个默认的CALayer对象层,虽然我门不可以重新创建它,但是我门可以再其上面添加子层. 我们知道,UIView有 addSubview:方法,同样,CALayer也有addSubla ...
- IOS CALayer(一)
对于一个app的好坏,我们首要判断的便是app的界面,而界面的建立则是在图形的处理基础上的,说到图形处理又不得不提及Quartz2D,CALayer. 在iOS系统中,你能看得见摸得着的东西基本上都是 ...
- iOS CALayer动画中使用的3个tree
在网上经常看到关于layer的tree的描述,不太理解,今天找到了官方文档,原文在Core Animation Programming Guide 中. Layer Trees Reflect Dif ...
随机推荐
- 《深入浅出MyBatis技术原理与实战》——4. 映射器,5. 动态SQL
4.1 映射器的主要元素 4.2 select元素 4.2.2 简易数据类型的例子 例如,我们需要统计一个姓氏的用户数量.应该把姓氏作为参数传递,而将结果设置为整型返回给调用者,如: 4.2.3 自动 ...
- Windows下上传项目到github
首先,一定要有耐心.看到一大堆的命令行(其实并没有一大堆)不要觉得枯燥,最后当你成功把你的项目上传上去之后那种胜利的成果,还是挺有意思的.本人第一次写博客,勿喷. 我写的是主要的流程,详细内容还请移步 ...
- 三:Storm设计一个Topology用来统计单词的TopN的实例
Storm的单词统计设计 一:Storm的wordCount和Hadoop的wordCount实例对比
- Monty Hall悖论
Monty Hall悖论又称为蒙提·霍尔悖论.三门问题.Monty Hall是上个世纪60年代,电视游戏节目“Let's Make a Deal”的主持人,这个悖论便是以他的名字来命名的.节目的规则是 ...
- 《The art of software testing》的一个例子
这几天一直在看一本书,<The art of software testing>,里面有一个例子挺有感触地,写出来和大家分享一下: [问题] 从输入对话框中读取三个整数值,这三个整数值代表 ...
- AC日记——小B的询问 洛谷 P2709
小B的询问 思路: 水题: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 50005 #define ll ...
- 如何实现electron多页面间通信
如何实现electron多页面间通信 1,业务需求: 总共有两个页面,页面A显示数据,页面B处理数据,主线程Main 2,实现的技术方案: 在主线程中打开页面A和B,B页面不进行显示,主要负责处理从A ...
- Flask实战第67天:Flask+Celery实现邮件和短信异步发送
之前在项目中我们发送邮件和 短信都是阻塞的,现在我们来利用Celery来优化它们 官方使用文档: http://flask.pocoo.org/docs/1.0/patterns/celery/ re ...
- XML--读写操作
XML文档的相关操作 1.配置文件:在实际项目开发中,XML作为配置文件是不可取代的(框架中的部分功能可以以注解形式来取代) (1) 不同技术,XML配置文件的作用也不一样. (2) 比如当前和这个阶 ...
- 【java】线程安全的整型类AtomicInteger
一.遇见AtomicInteger 在看项目代码的时候看到这个类,发现其功能很简单,就是一个整型变量的类型,出于好奇看了其类定义. 该类位于java.util.concurrent.atomic下,在 ...