Как установить высоту GeometryReader в соответствии с высотой его дочерних элементов в SwiftUI? - PullRequest
0 голосов
/ 18 октября 2019

В моем приложении SwiftUI у меня есть контейнер VStack (VStack 1), который получает полную высоту экрана. Внутри этого VStack у меня есть другой VStack (VStack 2), который получает высоту в соответствии с его потомками (Text), и я хочу поместить его внизу этого родителя (VStack 1). На VStack 2 мне нужно установить GeometryReader, чтобы получить высоту VStack (VStack 2). Проблема в том, что GeometryReader автоматически получает полноэкранную высоту. Таким образом, VStack 2 находится в середине экрана. Это не то, что я хочу. Я не знаю, смогу ли я установить высоту GeometryReader с той же высотой VStack 2?

Мой тестовый код:

import SwiftUI

struct ContentView: View {
  var body: some View {
    VStack {
      GeometryReader { geometry in
        VStack {
           Text("Text n°1")
           Text("Text n°2")
           Text("Text n°3")
           Text("Text n°4")
        }
        .border(Color(.red))
      }
      .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: nil, alignment: .bottom)
      .border(Color(.black))
    }
    .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity, alignment: .bottom)
  }
}

Результат:

Screenshot

Что я хочу:

Result I need

Спасибо за вашу помощь.

1 Ответ

1 голос
/ 18 октября 2019

Я думаю, вы слишком усложняете, используя GeometryReader. Вы пробовали просто использовать Spacer()?

struct ContentView: View {
    var body: some View {
        VStack {
            Text("Haha")
            Spacer()
            VStack {
                Text("1")
                Text("2")
                Text("3")
            }
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...