Я пытаюсь использовать GeometryReader
, чтобы назначить maxHeight списку в Scrollview
.
Для этого вопроса я создал следующий проект: GeometryReaderTesting .
Он устанавливает ContentView
с:
- Текст.
- Список.
- Текст.
Я извлек список и последний текст в их собственное представление, используя @ViewBuilder
, и я хочу установить maxHeight List равным 0,5 высоты экрана моего пользователя.
Проблема в том, что приложение не будет строиться со следующими ошибками, а GeometryReader не похоже, вычисляет правильную высоту:

Вот мой код ContentView, если кто-то знает, что я делаю неправильно ...
struct ContentView: View {
let arrayWithStuff = [ "one","two","three","four","five","six","seven","eight","nine","ten", "eleven", "twelve"]
var heightOfView: CGFloat = 0.0 // To be set by GeometryReader
var body: some View {
let myString = "Top of Test App"
return ZStack {
GeometryReader { g in
heightOfView = g.size.height
NavigationView {
print("height of view : \(heightOfView)")
ScrollView {
VStack {
Text(myString)
.padding()
Divider()
self.ViewBody()
} // END of Vstack
.navigationBarTitle("Test App", displayMode: .inline)
} // END of Scrollview
}//End of NavigationView
} // End of Geometry reader
} // End of Zstack
} // End of body
@ViewBuilder func ViewBody() -> some View {
VStack {
List {
ForEach (self.arrayWithStuff, id: \.self) { item in
Text(item) }
} // END of List
.frame(maxHeight: heightOfView*0.5)
Divider()
Text("Bottom of TEST APP")
}
.padding()
}
}
Опять же, любая помощь приветствуется.