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 ...
随机推荐
- 【linux】su和sudo命令的区别
来源:http://www.jb51.net/LINUXjishu/12713.html 一. 使用 su 命令临时切换用户身份 1.su 的适用条件和威力 su命令就是切换用户的工具,怎么理解呢?比 ...
- sqlserver 构架与性能优化
太阳底下没有新鲜事 一.sqlserver 构架结构 1.查询优化器三阶段 1).找计划缓存如果找到直接使用 2).简单语句生成0开销的执行计划 3).正式优化 一般情况下优化到开销小于1.0就会停止 ...
- cordova plugin 大全及安装命令
前言:用cordova开发hybrid app的过程中,由于是html5开发的app,在手机上很多权限受限制,这就导致了我们需要安装很多插件来弥补这一缺点.在网上搜了好久,感觉都不是很全,所以自己整理 ...
- CentOS7.5安装notepadqq
这个notepadqq就是linux版本的notepad了 1.添加yum源 sudo wget -O /etc/yum.repos.d/sea-devel.repo http://sea.fedor ...
- urllib2模块、cookielib模块
urllib2模块 urllib模块和urllib模块类似,用来打开URL并从中获取数据.与urllib模块不同的是,urllib模块不仅可以使用urlopen() 函数还可以自定义Opener来访问 ...
- linux c 学习笔记
gcc是linux c编译器 gcc -o o指定文件名或者会生成a.out文件 comment 注释 generate(生成) some simple ouput 使用标准 为C89
- Xamarin中Unsupported major.minor version 52.0问题解决
Xamarin中Unsupported major.minor version 52.0问题解决 出现这种问题,是由于所使用的Java代码使用Java 8所才具有的特性.这个时候,需要将JDK升级到J ...
- Educational Codeforces Round 41 (Rated for Div. 2) ABCDEF
最近打的比较少...就只有这么点题解了. A. Tetris time limit per test 1 second memory limit per test 256 megabytes inpu ...
- AGC 012 D - Colorful Balls
题面在这里! 为什么atcoder都是神仙题啊qwq 首先发现如果要让 x,y 互换位置的话,要么通过他们直接换 (也就是x和y满足两种操作之一),要么间接换,通过一些其他的元素形如 x可以和 a[1 ...
- [Codeforces-div.1 494C] Helping People
[Codeforces-div.1 494C] Helping People 试题分析 不难注意到题目所给的性质是一棵树,所以肯定是树形dp. 那么期望没有办法合并,我们还有一种最笨的方法就是求出概率 ...