如何在 SwiftUI (MacOS) 中禁用 Sidebar NavigationView 的可调整大小?

You*_*eem 8 macos swift navigationview swiftui

我是 Swift 的新手,我一直在尝试构建一个应用程序并边学习边学习。我有一个 NavigationView,它包含一个列表作为侧边栏,在用户单击时呈现内容。可以抓住这两个窗格之间的栏以允许用户调整大小。这似乎是 NavigationView 的默认行为。我正在尝试找到一种方法来禁用它,因为我不希望用户调整侧边栏的大小。

struct Sidebar: View {
    var body: some view {
        List {
            NavigationLink("First section", destination: FirstSection)
        }
        .frame(minWidth: 150, maxWidth: 150)
    }
}
Run Code Online (Sandbox Code Playgroud)

我也找不到一种方法来告诉 Swift 我希望列表视图具有适合内容的动态宽度。就像使用 CSS 完成的一样width: fit-content;

在下图中,您可以看到我能够将侧边栏的大小调整为几乎屏幕的一半。如何禁用这种行为?

在此输入图像描述

小智 2

我确实找到了一个解决方案,您所要做的就是设置目标宽度,以便侧边栏无法调整到目标视图的大小,例如像这样##将firstSection()视为视图##

这里是应用程序主要启动的地方

import SwiftUI

@main
struct macosTestApp: App {
var body: some Scene {
    WindowGroup {
        NavigationView {
            SideBar()
        }.toolbar {
            // add the open/close sidebar navigation here
            ToolbarItem(placement: .navigation) {
                Button(action: toggleSidebar, label: { // 1
                    Image(systemName: "sidebar.leading")
                })
            }
           
         
            
        }.frame(minWidth: 800, maxWidth: .infinity, minHeight: 600, maxHeight: .infinity, alignment: .center)
    }
}
private func toggleSidebar() { // 2
    NSApp.keyWindow?.firstResponder?.tryToPerform(#selector(NSSplitViewController.toggleSidebar(_:)), with: nil)
}

}
Run Code Online (Sandbox Code Playgroud)

这里是侧边栏和导航视图

import SwiftUI

struct SideBar: View {
@State var isActiveView:Bool = true
var body: some View {
    
    List {
        NavigationLink("First section", destination: FirstSection().frame(minWidth: 750, maxWidth: .infinity, minHeight: 600, maxHeight: .infinity, alignment: .center),isActive: $isActiveView)
    }
    
}

}

struct FirstSection: View {

var body: some View {
    
    Text("Hello")
}

}

struct text_Previews: PreviewProvider {
static var previews: some View {
    SideBar()
}
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述