UIView 中position 和anchorPoint 的了解 iOS
2016-03-18 21:22
309 查看
一般来说都是先介绍positon,在介绍anchorPoint。这里反过来介绍。
继续,很明显,白纸的旋转形态随图钉的位置不同而不同,图钉订在白纸的正中间与左上角时分别就造成了两种旋转形态,这事有图钉(anchorPoint)的位置决定的。如何衡量图钉(anchorPoint)在白纸中的位置呢?在iOS中,anchorPoint点的值是用一种相对于bounds的比例值来确定的,在白纸的左上角、右下角,anchorPoint分别为(0, 0), (1, 1),也就是说anchoPoint是在单位坐标空间(同时也是左手坐标系)中定义的。类似地,可以得出在白纸的中心点、左下角和右上角的anchorPoint为(0.5,
0.5), (0, 1), (1, 0)。
像UIView有superView与subView的概念一样,CALayer也有superLayer与layer的概念,前面说的白纸可以理解为layer,书桌可以理解为superLayer。如果各自以左上角为原点,则在图中有相对的两个坐标空间。
1、anchorPoint:
从一个例子来入手,想象一下,把一张A4白纸用图钉订在书桌上,如果订的不是很紧的话,白纸就可以沿顺时针或逆时针方向绕着图钉旋转,这时候图钉就起着指点的作用。我们要解释的anchorPoint就相当于白纸上当图钉,它主要的作用就是用来作为变换的指点,旋转就死一种变换,类似的还有平移、缩放。继续,很明显,白纸的旋转形态随图钉的位置不同而不同,图钉订在白纸的正中间与左上角时分别就造成了两种旋转形态,这事有图钉(anchorPoint)的位置决定的。如何衡量图钉(anchorPoint)在白纸中的位置呢?在iOS中,anchorPoint点的值是用一种相对于bounds的比例值来确定的,在白纸的左上角、右下角,anchorPoint分别为(0, 0), (1, 1),也就是说anchoPoint是在单位坐标空间(同时也是左手坐标系)中定义的。类似地,可以得出在白纸的中心点、左下角和右上角的anchorPoint为(0.5,
0.5), (0, 1), (1, 0)。
像UIView有superView与subView的概念一样,CALayer也有superLayer与layer的概念,前面说的白纸可以理解为layer,书桌可以理解为superLayer。如果各自以左上角为原点,则在图中有相对的两个坐标空间。
2、position:
这时候可以大胆的猜测一下,position是不是就是anchorPoint在superLayer中的位置呢?答案是确定的,更确切的说,position是layer中的anchorPoint点在superLayer中的位置坐标。因此可以说,position点是superLayer的,anchorPoint点是相对于layer的,两者是相对不同的坐标空间的一个重合的点。3、position 和 anchorPoint 的关系:
anchorPoint 决定着CALayer身上的那个点会在position属性所指的位置。相关文章推荐
- ue4 常见问题解答
- UVA 1423 Guess 拓扑排序
- 交换排序—快速排序(Quick Sort)
- DEPENDENT SUBQUERY标记
- leetcode 232. Implement Queue using Stacks
- [扫描线 线段树 暴力] BZOJ 4059 [Cerc2012]Non-boring sequences
- GUI学习
- fuel5.1在vmware esxi的安装流程
- Leetcode:303. Range Sum Query - Immutable(JAVA)
- IOS控件学习之UI ScrollView(7)
- JAVA GUI界面组件学习
- 百度在线编辑器ueditor的使用
- fuel 5.1在vmware esxi上的部署
- sugue生命周期,prepareforsegue
- fuel8.0的问题
- Jenkins部署Windows UI自动化的调度权限问题
- c#生成支付宝签名(hbuilder上调用)
- Arduino通过串口发送结构体
- 探秘Java中String、StringBuilder以及StringBuffer
- hbuilder上传图片