macOS 上的 SwiftUI:使 .sheet 中的子视图使用可用宽度

时间:2021-03-22 10:25:24

标签: macos swiftui

我想在我的 macOS 应用程序中单击一个按钮时显示一个带有标题和操作按钮的工作表。虽然这有效,但我确实遇到了包含按钮的宽度问题:它们仅使用其固有的宽度而不是其父级的宽度。

开箱即用,不提供任何宽度值,工作表如下所示: enter image description here

我目前正在对宽度进行硬编码并将其应用到按钮上——这可行,但并不是很性感。工作表看起来像这样:

enter image description here

那更像。这是我的代码:

struct ContentView: View {
    @State private var showSheet = false
    
    var body: some View {
        VStack {
            Text("My View")
            Button {
                showSheet = true
            } label: {
                Text("Show Sheet…")
            }

        }
        .sheet(isPresented: $showSheet) {
            SheetView(showSheet: $showSheet)
        }
    }
}

struct SheetView: View {
    @Binding var showSheet: Bool
    
    let width = CGFloat(200.0)
    
    var body: some View {
        VStack {
            Text("FooBar")
            Divider()
            
            Button {
                showSheet = false
            } label: {
                Label("Foo", systemImage: "paperclip")
                    .frame(width: width)
            }
            
            Button {
                showSheet = false
            } label: {
                Label("FooBarBuzz", systemImage: "paperclip")
                    .frame(width: width)
            }
            
            Button {
                showSheet = false
            } label: {
                Label("Cancel", systemImage: "xmark")
                    .frame(width: width)
            }
        }
        .padding()

    }
}

我的目标是将工作表中所有子视图的宽度设置为宽度最大的子视图 - 我该怎么做?

0 个答案:

没有答案