My solution in 2018 was to add a bottom-layer panel that was the full size of the layout,
and then, after loading the layout, compare the post-AutoScale size of that panel to the screen dimensions,
work out a rescaling factor to fit the bottom full-size panel to within the screen,
(so that it would be either the screen height but less width, or the screen width but less height),
work out X and Y offsets to split the excess width or height equally (with at least one of X and Y being zero),
then GetViewsRecursive and adjust all views accordingly
It worked surprisingly well, provided that the layout aspect ratio is middle-of-the-range (or multiple layouts are spread equally across the range).