我正在使用NavigationView在Mac应用程序的窗口中显示SidebarView和DetailView:
import SwiftUI
private let fruits = ["? Apple", "? Coconut", "? Mango", "? Kiwi"]
struct SidebarView: View {
@Binding var selectedFruit: String?
var body: some View {
List(fruits, id: \.self, selection: $selectedFruit) { fruit in
Text("\(fruit)")
}
.listStyle(SidebarListStyle())
.frame(minWidth: 180, idealWidth: 200, maxWidth: 300)
}
}
struct DetailView: View {
@Binding var fruit: String?
var body: some View {
Text("\(fruit ?? "Default Fruit")")
.font(.headline)
.frame(maxWidth: .infinity, maxHeight: .infinity)
}
}
struct ContentView: View {
@State private var selectedFruit: String?
var body: some View {
NavigationView {
SidebarView(selectedFruit: $selectedFruit)
DetailView(fruit: $selectedFruit)
}
.frame(width: 500, height: 400)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
可以通过在窗口中向左或向右拖动中心分隔线来调整SidebarView的宽度。我想为边栏定义一个初始宽度200,最小宽度为180,最大宽度为300。我通过设置List的框架来尝试此操作,该列表的确设置了最大宽度,但是边栏仍然可以完全崩溃。另外,侧边栏的初始宽度似乎由minWidth
而非idealWidth
定义。
答案 0 :(得分:0)
对于发现此问题并想知道如何在macOS中设置边栏的maxWidth的任何人,您实际上没有。如果这样做,视图将停止增长,然后被捕获在侧边栏的中间,该边栏将继续扩展。
花了我一分钟时间才弄清楚这一点,但是您要做的是设置另一个视图(详细信息视图)的minWidth。侧边栏将一直增长,直到不能增长为止。您会注意到,即使Finder的侧边栏也会不断增长,直到达到细节的minWidth为止。