Я бы хотел попросить вас о помощи. Я пытаюсь захватить Высота VStack , используя геометрию , а затем на основе этого значения Высота VStack вычислить высоту дочернего элемента (внутри VStack).
Изображение моего текущего представления VStack
Я использовал .frame вне VStack, чтобы заполнить весь экран. Затем я использовал .borde r, чтобы визуально проверить, действительно ли он заполняет экран (работает нормально)
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: Alignment.topLeading)
Проблема может внутри VStack, высота отображается как GCFloat 734. Даже если размер границы намного больше .
struct BodyView: View {
@State var stackHeight : CGFloat = 0
var body: some View {
GeometryReader { geometry in
VStack {
Text("VStack size: \(self.stackHeight)")
.bold()
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.horizontal)
.background(Color.green)
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: Alignment.topLeading)
.onAppear{
self.stackHeight = geometry.size.height
}
.border(Color.purple, width: 5)
}
}
}
struct BodyView_Previews: PreviewProvider {
static var previews: some View {
BodyView()
}
}
Как я могу зафиксировать фактический размер VStack, когда он заканчивает загрузку?
Когда я запускаю (onAppear), высота VStack кажется правильной, однако мне нужно, чтобы она была мгновенно захвачена.