RectTransform是Unity画布UI的必要组件,用来继承并代替对象的Transform。相比较Transform,其多出了两个核心属性Anchor和Pivot,通过这两个属性,可以实现UI尺寸和位置的动态变换。
1.Anchor(锚点)
锚点由Min和Max两个点组成,组成情况共有三种
①当Min和Max完全重合时,会形成一个点,共有五个属性Width,Height,PosX,PosY,PosZ,
点前两个表达的是当前UI的宽度和高度,后面三个表达的是Anchor到Pivot的距离。
②当Min和Max四坐标展开时,会形成一个矩形,此时共有五个属性Left,Top,Right,Bottom,PosZ,其中Left表示UI的左边到矩形的距离,以此类推,PosZ可表示深度。
③当Min和Max分别重合于上下时,会形成一条线,共有五个属性PosX,Top,Width,Bottom和PosZ,这种情况下PosX变成了线到Pivot的垂直距离,其他三个属性与之前意义一样。
③当Min和Max分别重合于上下时,会形成一条线,这种情况下PosY变成了线到Pivot的垂直距离。
2.Pivot
其实就是UI的中心点,有关于ReacTransform的偏移,都是以这个点为原点。当AnchorMin和AnchorMax有重合时,PosX,PosY都指的是Anchor中心点到Pivot的距离。
3.offsetMax和offsetMin
offsetMax指UI元素的右上角的坐标,减去AnchorMax的值,得到一个从AnchorMax指向元素右上角的向量(vector2类型);
offsetMin指UI元素的左下角的坐标,减去AnchorMin的值;
4.sizeDelta
值为offsetMax-offsetMin
Anchor重合时,表示为UI左上角与右上角之间的距离,sizeDelta.x为UI的宽,sizeDelta.y为UI的高。
当Anchor不重合时,表示为插值,没有实际用法。
5.anchoredPosition
通过直接设置anchoredPosition的值可以改变UI元素的位置,anchoredPosition表征的是元素Pivot到Anchor或Anchor中心点的距离
6.一些方法
SetSizeWithCurrentAnchors(Animations.Axis axis, float size)
这个方法无论在绝对布局还是相对布局的情况下,都可以通过直接设置rect中的width和height值来改变UI元素的大小。
rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, 100);`
SetInsetAndSizeFromParentEdge(RectTransform.Edge edge, float inset, float size)
可以根据父物体的Edge(某一边)去布局。其中第一个参数就是用于确定基准的边,第二个参数是UI元素的该边界与父物体该边界的距离,第三个元素是设定选定轴上UI元素的大小
rectTransform.SetInsetAndSizeFromParentEdge(RectTransform.Edge.Right, 200, 400)
借鉴文章
https://blog.csdn.net/jmu201521121014/article/details/105725175