Изображение моего текущего представления VStack
Я использовал .frame вне VStack, чтобы заполнить весь экран. Затем я использовал .border, чтобы визуально проверить, действительно ли он заполняет экран (работает нормально)
Код: Выделить всё
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: Alignment.topLeading)
Код: Выделить всё
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()
}
}
Когда я запускаю (onAppear), высота VStack отображается правильно, однако мне нужно, чтобы он был захвачен мгновенно.
Подробнее здесь: https://stackoverflow.com/questions/609 ... as-display