как я уже говорил, нормальное раскладывание ящиков с автопереносом — это задача для linear constraint solver'ов типа cassowary. потому что в общем случае у такой задачи овердохуя решений, любое из них может быть «лучше», и для выбора надо или обмазываться дополнительными constraints, или тупо хватать первое попавшееся.
даже в простейшем случае: надо ли сначала полностью раскладывать детей в одном ящике, и только потом переходить к другому, или перебирать все ящики, добавляя в каждый по одному ребёнку за раз и проверяя переносы? оба решения очевидно «правильные». конечно, можно добавить флаг «этот ящик требует полной предварительной раскладки»… но ведь неизбежно появятся и другие желаемые варианты.
дополнительно задача усложняется случаем: «я не знаю желаемых размеров, посчитай их мне как-нибудь». и появляется дополнительное ограничение «preferred size», которое усложняет как код, так и описание интерфейса.
конечно, можно откомпилировать это всё в систему уравнений для cassowary, и тупо их решить универсальным солвером. но мне такая стратегия не нравится, потому что cassowary сам по себе достаточно жирный. а кастрировать его глупо, потому что если уже пихать под низ такой решатель, то пусть он будет доступен со всеми фичами, если кому надо. но это кил 150 только на сам решатель, фи.
автоперенос же фича очень полезная для случая, когда размеры контролов могут варьироваться в широких пределах. у FlexUI так и есть, потому что в общем случае уй не только может быть использован в разрешениях от 640x480 до сильнодохуя, но ещё и имеет фичу ui_scale. автоперенос в горизонтальных ящиках позволит получить пусть не лучший, но хотя бы относительно приемлемый уй со скроллом в одном направлении вместо двух.