我在NavigationView中使用了GeometryReader,但是当视图首次显示时,大小为0。我不确定这是否是一个bug或正确的行为,但我正在寻找一种解决方法,因为我的子视图没有正确地渲染。这个结构体演示了这个问题。下面的打印输出是:(0.0, 0.0)大小。有没有办法在初始显示时强制NavigationView提供正确的几何信息?
struct ContentView: View {
var body: some View {
NavigationView {
GeometryReader { geometry in
Text("Geometry Size Is Wrong")
.onAppear {
print(geometry.size) // prints out (0.0, 0.0)
}
}
}
}
}
.onChange(of: geometry.size) { ... }
,它会起作用。 - undefinedviewDidLoad
...通常情况下,第一次加载时框架是不正确的。就像你会在viewDidLayoutSubviews
中修改框架一样,你可以按照@NewDev的建议,在.onChange
中修改它们。 - undefined