SwiftUI
иногда имеет странные проблемы поведения с размещением некоторых модификаторов.
В вашем случае, если вы переместитесь на .navigationBarItems
после navigationBarTitle
, это должно исправить эту проблему, и вы получите ответ ваш VStack
интервал.
.navigationBarTitle("Rezepte")
.navigationBarItems(trailing: Button(action: {
self.showingAddRecipeView = true
}, label: {
Image(systemName: "square.and.pencil")
.foregroundColor(.primary)
}).padding())
Кроме того, я заметил, что эти модификаторы, связанные с навигацией, лучше располагать ближе к NavigationView
, чем глубоко внутри иерархии.
Пример (на основе вашей иерархии представлений):
struct ContentView: View {
@State var isShowing: Bool = false
var body: some View {
NavigationView {
GeometryReader { (geo) in
ScrollView {
VStack(spacing: 60) {
ForEach(0...10, id:\.self) { (index) in
NavigationLink(destination: Text(String(index))) {
Text("Button")
}
}
}
.navigationBarTitle("Title")
.navigationBarItems(trailing: Button(action: {
self.isShowing = true
}, label: {
Image(systemName: "square.and.pencil")
}))
.sheet(isPresented: self.$isShowing) {
Button(action: {
self.isShowing = false
}) {
Text("Dismiss")
}
}
}
}
}
}
}