AutomaticCanvasSize Working with UIListLayout and UIScale Causes Wrong Automatic Size

Reproduction Steps
This issue occurs when a UIScale constraint is placed within a Frame, in which a ScrollingFrame occurs (the scrolling frame contains a UIListLayout of text items, however on brief test it also works when no UIListLayout constraint is used). This occurs in both studio and client.

System Information: Windows 10 Desktop, AMD A10-5700, 16GB RAM, NVIDIA GeForce GT 1030

Repro: https://www.roblox.com/games/7059884165/Quick-Test
Repro File: https://pert.is/loose/AutomaticSizeListRepro.rbxl (embeds don’t seem to be working via this form for me)

Expected Behavior
I expect the CanvasSize to automatically match the contents of the scrolling frame, such that the bottom of the last item is the maximum scroll distance of the frame, as per when UIScale = 1.

Actual Behavior
When UIScale > 1, the bounds are less than the scaled contents of the frame, so at the maximum scroll distance it hasn’t yet shown all the elements.

(if you set UIScale < 1 there also seems to be an issue with the contents jumping once the scrollbar reaches a certain distance.)

Workaround
Programmatically getting the AbsoluteContentSize of the UIListLayout, dividing this by the scale and setting that to the CanvasSize with AutomaticCanvasSize set to None, however I’m struggling to get this workaround to work with a more complex scenario.

Issue Area: Engine
Issue Type: Display
Impact: Moderate
Frequency: Constantly
Date First Experienced: 2021-07-07 00:07:00 (+01:00)
Date Last Experienced: 2021-07-07 00:07:00 (+01:00)

15 Likes

I can second this report. I frequently work with UIScale, and AutomaticSize seems to be messing up things like text labels, lists, and grids if the UIScale affecting the automatic sized frame is not equal to 1.

1 Like

This is causing major issues in my game with users on mobile or on monitors with resolutions >1080p (due to the math I am using). It will be a pain to switch every instance of automatic scaling to use custom math, and I really hope this is fixed soon.

To work around the problem, I’ve been using UIListLayout.AbsoluteContentSize when possible - but I shouldn’t have to do this and it’s been a real pain point in my UI development! Really hoping for a fix.

1 Like

I’m adding to this with another repo that uses UIGridLayout and UISizeConstraint, the same issue happens.

Minimum repo file: auto-size-ui.rbxl (41.4 KB)

In this case, removing my UISizeConstraint resolves the issue, but I need this constraint for the game unfortunately (below)

image

image

Hi @centraltrains , thank you for this report. We have filed an internal ticket for investigation.

3 Likes

Is there any update on the ticket?

2 Likes

Hey, so when I apply padding to my UI listlayout the automatic canvas size doesn’t size correctly on the y axis. And it gets worse as I increase the padding. It wont let me scroll down more than this which doessnt show the whole UI. This is a major problem because I have to resort to custom code just to get it to work using a UI listlayout. I am able to reproduce this problem 100 percent of the time.

1 Like