RecTransform的布局计算方式容易让人混乱,因为参数很多,而且分情况。这篇文章讲得很好了,但稍微有点乱,我就想总结精简下。
锚点不重合时
锚点就是界面里的anchors
,两个点Min一个,Max一个。当它们不重合时,Min作左下角,Max作右上角,它们构成一个矩形框区域。
然后面板这里就变成修改4边的距离了,Left
就是当前RectTransform
左边和锚点构成矩形框作边界的距离,其他属性分别是其他3个边的距离,这样当前RectTransform
就确定了。
锚点重合时
width/Height就确定了当前RectTransform
大小,而位置就是根据Pivot来确定。面板上的Pivot确定的是Pivot在当前RectTransform
中的位置,锚点的位置,加上PosX和Pos Y就可以确定Pivot的在父控件的位置,两者是同一个位置,就把当前RectTransform
确定下来了。
其实在这里,Pivot实际是锚点的作用,可以想象钉在墙上的一张纸,Pivot就是那个钉子。
关于两种计算方式的思考
我觉得两种最大的区别是后者的宽高是固定的,也就是如果你希望你的子控件的大小固定,它不跟随父视图大小变化而变化,那么就用第二种,比如技能按键。而如果你的子控件和父控件是边界距离固定,那么就用第一种,比如占整个屏幕的商品列表。