- Home /
Scaling UI panels with layout element component
I want to make an UI panel with dynamic content. Parts of the UI will come and go and the main window should account for the size change.
My main window has a VerticalLayoutGroup
and ContentFitter
components, and all the children has a LayoutElement
component with the PreferredSize
set to some values. The idea was to animate the components by slowly changing the Y-scale of the RectTransform
from 1 to 0 when the UI elements should disappear and back to reappear. The problem is, the UI elements do scale, but the layout system doesn't account for that and still allocates the full PreferredSize in the main window.
Is there a way around it?
Answer by radistmorse · Jun 04, 2016 at 03:59 PM
Ok, I found the workaround myself: I re-implemented the VerticalLayoutGroup
class. I changed the CalculateLayoutInputVertical
method by adding two extra lines:
public override void CalculateLayoutInputVertical () {
CalcAlongAxis (1, true);
var scale = GetComponent<RectTransform> ().localScale.y;
SetLayoutInputForAxis (minHeight, preferredHeight * scale, flexibleHeight, 1);
}
Now the scaling works as I want.
Your answer
![](https://koobas.hobune.stream/wayback/20220612081412im_/https://answers.unity.com/themes/thub/images/avi.jpg)