【发布时间】:2022-06-14 02:30:16
【问题描述】:
我有一个在 iPad 上使用侧边栏的 SwiftUI 应用。
将List 与修饰符.listStyle(.sidebar) 一起使用,旋转时插入间距不再适用,但是当我强制关闭应用并重新打开时,它看起来很正常。
边缘间距不再适用的情况:
- 用户首次登录时
- 旋转设备
- 折叠侧边栏并重新打开)
当用户登录时强制退出应用并重新加载时问题就消失了。
内容视图
struct ContentView: View {
@State var signedIn = false
var body: some View {
if signedIn = false {
Text("Sign In").onTapGesture(){signedIn = true}
}
if signedIn = true {
AppSidebarNavigation()
}
}
}
侧边栏
struct AppSidebarNavigation: View {
enum NavigationItem {
case home
case expenses
}
@State private var selection: NavigationItem? = .home
var body: some View {
NavigationView {
sidebar
.navigationTitle("")
.navigationBarTitleDisplayMode(.inline)
.navigationBarHidden(true)
// Main View
HomeView()
}
.navigationViewStyle(DoubleColumnNavigationViewStyle())
}
}
extension AppSidebarNavigation {
var sidebar: some View {
List(selection: $selection) {
Group {
NavigationLink(destination: HomeView()
.environmentObject(store), tag: NavigationItem.home, selection: $selection) {
Label("Homes", systemImage: "house")
.modifier(navText())
}
.tag(NavigationItem.home)
.navigationTitle("")
.navigationBarTitleDisplayMode(.inline)
.navigationBarHidden(true)
NavigationLink(destination: Expenses()
.environmentObject(store)
.navigationBarTitleDisplayMode(.large),
tag: NavigationItem.expenses, selection: $selection) {
Label("Expenses", systemImage: "arrow.right.arrow.left")
.modifier(navText())
}
.tag(NavigationItem.expenses)
.navigationBarTitleDisplayMode(.large)
}
}
.listStyle(.sidebar)
}
}
【问题讨论】:
-
没有人可以编译您提供的代码,因此您不太可能在这里得到有用的答案。考虑创建一个minimal reproducible example。
-
无法使用提供的代码重现,Xcode 13.4 / iPadOS 15.5。它可能在不同的代码中。需要 MRE。
标签: ios list ipad swiftui sidebar