CALayer
有两个非常重要的属性:position
和anchorPoint
@property CGPoint position;
用来设置CALayer在父层中的位置
以父层的左上角为原点(0, 0)
@property CGPoint anchorPoint;
称为“定位点”、“锚点”
决定着CALayer身上的哪个点会在position属性所指的位置
以自己的左上角为原点(0, 0)
它的x、y取值范围都是0~1,默认值为(0.5, 0.5)
我们先来谈anchorPoint(锚点)
它的X值和Y值最大为1最小为0
默认的anchorPoint(锚点)
位置是(0.5,0.5)
,白点
就是锚点所在位置
此时的anchorPoint(锚点)
位置是(0,0)
,白点
就是锚点所在位置
此时的anchorPoint(锚点)
位置是(0.5,0)
,白点
就是锚点所在位置
此时的anchorPoint(锚点)
位置是(0.5,1)
,白点
就是锚点所在位置
此时的anchorPoint(锚点)
位置是(1,1)
,白点
就是锚点所在位置
就算宽
、高
样式改变了,X和Y值取值范围还是0~1
此时的anchorPoint(锚点)
位置是(1,1),白点
就是锚点所在位置
@property CGPoint anchorPoint;
position
用来设置CALayer在父层中的位置
以父层的左上角为原点(0, 0)
添加一个紫色图层
到蓝色图层
上,紫色图层
是蓝色图层
的子图层
假设紫色图层
的position
是(50,50)
紫色图层
的anchorPoint(锚点)
位置是(0,0)
紫色图层
显示到什么位置,由position
属性决定
图一是原始图
图二是即将移动的图
图三是移动完成的图
紫色图层
自身的anchorPoint(锚点)
必须和自身的position
重合
===============================================
假设
紫色图层
的position
是(50,50)
紫色图层
的anchorPoint(锚点)
位置是(0.5,0.5)
图一是原始图
图二是即将移动的图
图三是移动完成的图
===============================================
Snip20160301_12.png假设
紫色图层
的position
是(50,50)
紫色图层
的anchorPoint(锚点)
位置是(1,1)
图一是原始图
图二是即将移动的图
图三是移动完成的图
===============================================
Snip20160301_13.png紫色图层
宽高为100父控件
position
默认位置是左上角原点(0, 0)
紫色图层
的anchorPoint(锚点)
默认位置是(0.5,0.5)
紫色图层
自身的anchorPoint(锚点)
必须和自身的position
重合
如图所示:所以只显示四分之一出来
===============================================
Snip20160301_14.png如果设置
紫色图层
的anchorPoint(锚点)
为(0,0)
父控件
position
默认位置是左上角原点(0, 0)
紫色图层
自身的anchorPoint(锚点)
必须和自身的position
重合
网友评论
而不是superLayer的position与subLayer的anchorPoint之间的关系吧
你的代码实例正好正确 应该是因为紫色layer的position刚好也是(0,0)
如果你修改一下紫色layer的position值,紫色layer的anchorPoint就不会与self.view.layer的
position重合了!
我是这么认为的!
请看:http://blog.sina.com.cn/s/blog_155083d9e0102wi0r.html
紫色图层的anchorPoint(锚点)位置是(0,0) 感觉写的不对,应该是 -- 假设紫色图层的position是(50,50)
紫色图层的anchorPoint(锚点)位置是(0,0),不知道说的对不对?
而不是superLayer的position 与subLayer的anchorPoint之间的关系
更多 iOS 开发相关文章请关注: http://www.jianshu.com/collection/e84a7722d673
谢了