我希望“ $ 0.00”位于屏幕中间,但我不知道该怎么做。
这是我的代码:
var body: some View {
NavigationView {
ScrollView {
VStack(alignment: .center) {
Text(String(format: "$%.2f", (dolaresVM.dolares.last?.v)!))
.font(.largeTitle)
}.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.edgesIgnoringSafeArea(.all)
}.navigationBarTitle("Test")
.onAppear(perform: self.dolaresVM.fetchDolares)
}
}
我在做什么错?
ScrollView
对于儿童具有无限的内部空间,因此VStack
的高度将由其内容(在本例中为Text
)定义。没有ScrollView
即可使用:
var body: some View {
NavigationView {
VStack(alignment: .center) {
Text(String(format: "$%.2f", 0)).font(.largeTitle)
}.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.edgesIgnoringSafeArea(.all)
.navigationBarTitle("Test")
}
}
也可以为VStack
提供固定的高度。
如上所述,您不需要ScrollView,因此可以在.navigationBarTitle("Test")
中写入NavigationView
。这样NavigationBarTitle
和Text("$0.00")
都将显示在屏幕上。
这里输入了Text的静态值,您可以将其替换为您通过Model设置的动态值。
struct ContentView: View {
var body: some View {
NavigationView {
VStack(alignment: .center) {
Text("$0.00")
.font(.largeTitle)
}
.frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity)
.edgesIgnoringSafeArea(.all)
.navigationBarTitle("Test")
}
}
}