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)
归档时间: |
|
查看次数: |
1158 次 |
最近记录: |