recttransform
转载自https://www.jianshu.com/p/4592bf809c8b
1.Anchor:子物体和父物体联系的桥梁,Anchors是由两个点确定的,他们就是AnchorMin以及AnchorMax,之所以anchorMax和anchorMin的值是小数,是因为其表征的是该点所在位置占父物体大小的比例,也就是图中黑色画线部分占灰色物体总长度和总宽度的比例
- 当anchorMax与anchorMin相等时,Anchor呈现为一个点,我称之为
锚点
- 当anchorMax与anchorMin不相等时,Anchor呈现为一个框,我称之为
锚框
(即示意图中的情况)
2.绝对布局
所谓的绝对布局,就是出现锚点
的情况,此时的recttransform面板中的属性变成了
在绝对布局的情况下无论分辨率是多少,父物体多大,该UI元素的大小是恒定的
而剩下的PosX
,PosY
,PosZ
表征的就是Pivot (第三部分有关于Pivot的讲解) 到锚点的距离
3.相对布局
Left
,Top
,Right
,Bottom
,PosZ
,其中的PosZ
表征的是该元素到父物体在Z轴上的偏移,利用这个值可以调整UI元素的显示顺序,不过我用的不多,这里不作太多讨论。剩下的四个值应该很好理解了,就是UI元素的每一条边距离父物体的每一条边的距离。![](https://img2018.cnblogs.com/blog/1409966/201908/1409966-20190823144332061-926751814.png)
4.pivot
Pivot中心点,就是该UI元素旋转缩放的中心点
5.Offset
OffsetMax的值值就是UI元素的右上角的坐标,减去AnchorMax的值,得到一个从AnchorMax指向元素右上角的向量(vector2类型)
6.sizeDelta
在锚点情况下,offsetMax和Min的起点相同,根据向量相减的三角形法则(不记得是不是这样说得了哈哈哈),可以得到一个新的向量,这个新的向量的X和Y的大小正好UI元素的宽和高相等,所以在这个时候去设置sizeDelta的值,可以直接调整UI元素的大小
在锚框的情况下,offstMax减去Min,得到的将不再是UI元素的大小,而是一个新的奇怪的向量,这个向量代表的物理意义是,sizeDelta.x值就是锚框的宽度与UI元素的宽度的差值,sizeDelta.y的值就是锚框的的高度与UI元素的高度的差值
7.rect
只读,可以获取UI大小
8.anchoredPosition
通过直接设置anchoredPosition的值可以改变UI元素的位置,在使用锚点
的情况下,anchoredPosition表征的是元素Pivot到Anchor的距离在使用锚框
的情况下,anchoredPosition表征的是元素Pivot到锚框中心点的距离
9.SetSizeWithCurrentAnchors(Animations.Axis axis, float size)
这个方法无论在绝对布局
还是相对布局
的情况下,都可以通过直接设置rect中的width
和height
值来改变UI元素的大小。
rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 100);
rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 100);