【问题标题】:List edge insets keeps changing - SwiftUI列表边缘插图不断变化 - SwiftUI
【发布时间】: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


猜你喜欢
  • 2019-10-12
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多