Как расширить представление контента под панелью навигации в SwiftUIIOS

Программируем под IOS
Ответить
Anonymous
 Как расширить представление контента под панелью навигации в SwiftUI

Сообщение Anonymous »

В приложении для iOS я хотел разместить представление содержимого под панелью навигации, как в ZStack, чтобы представление содержимого не смещалось, когда панель навигации скрывается/отображается.
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}
}
}
ChildView будет визуально перемещаться вверх и вниз, когда панель навигации скрывается/отображается. Как на этом снимке экрана:
Изображение
Когда пользователь нажимает на текст, панель навигации скрывается, а дочернее представление расширяется вверх, а текст также перемещается вверх:
Изображение

Как сделать так, чтобы представление контента (зеленого цвета) располагалось под панелью навигации в первое место (т.е. всегда) ?

Подробнее здесь: https://stackoverflow.com/questions/784 ... in-swiftui
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»