Дейв Абрахамс объяснил некоторые механизмы компоновки SwiftUI в своем выступлении на WWDC19 о пользовательских представлениях, но он не учел некоторые моменты, и у меня возникли проблемы с определением размеров моих представлений.
Есть ли способ, чтобы View мог сказать своему контейнеру, что он не предъявляет никаких требований к пространству, но будет использовать все пространство, которое ему предоставляется? Еще один способ сказать, что контейнер должен обнять свои подпредставления.
Конкретный пример, я хочу что-то вроде c:
![Some Texts inside a VStack](https://i.stack.imgur.com/nuA4r.png)
Если у вас есть Text
s внутри VStack
, как в а), VStack
примет его ширину для самого широкого подпредставления.
Если вы добавите Rectangle
, хотя, как и в b), он будет расширяться настолько, насколько это возможно, пока VStack
не заполнит его контейнер.
Это означает, что Text
s и Rectangle
s относятся к разным категориям, когда дело доходит до макета, Text
имеет фиксированный размер, а Rectangle
является жадным. Но как я могу передать это своему контейнеру, если я делаю свой собственный View
?
Результат, которого я на самом деле хочу достичь, это c). VStack должен игнорировать Rectangle (или мой пользовательский вид), когда он определяет его размер, а затем, как только он это сделает, затем он должен сообщить Rectangle или моему пользовательскому представлению, сколько места он может иметь.
Учитывая, что SwiftUI, кажется, размещает снизу вверх, возможно, это невозможно, но кажется, что для этого должен быть some
способ.