XCode: 15.3
iOS: 15 или 16
Сейчас у меня есть этот код:
Код: Выделить всё
import SwiftUI
@main
struct ViewDismissApp: App {
var body: some Scene {
WindowGroup {
MyTabView()
}
}
}
struct MyTabView: View {
var body: some View {
TabView {
NavigationView {
RandomView(title: "tab 1")
}
.tabItem {
Text("Tab 1")
}
NavigationView {
RandomView(title: "tab 2")
}
.tabItem {
Text("Tab 2")
}
}
}
}
struct RandomView: View {
let title: String
var body: some View {
NavigationLink {
ChildView()
} label: {
Text(title)
}
}
}
struct ChildView: View {
@State private var showNavigationbar = true
@State private var hideTabbar = true
var body: some View {
mainBody()
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background{Color.green}
.toolbar(hideTabbar ? .hidden : .visible, for: .tabBar)
.onAppear {
hideTabbar = true
}
.onDisappear {
hideTabbar = false
}
}
private func mainBody() -> some View {
VStack {
Text("Tap here to hide NavigationBar")
}
.onTapGesture(perform: {
showNavigationbar.toggle()
})
.navigationBarHidden(!showNavigationbar)
.navigationBarTitleDisplayMode(.inline)
.background{Color.yellow}
}
}

Когда пользователь нажимает на текст, панель навигации скрывается, а дочернее представление расширяется вверх, а текст также перемещается вверх:

Как сделать так, чтобы представление контента (зеленого цвета) располагалось под панелью навигации в первое место (т.е. всегда) ?
Подробнее здесь: https://stackoverflow.com/questions/784 ... in-swiftui
Мобильная версия