SwiftUI 底部工作表,如笔记应用程序的格式选项卡

问题描述 投票:0回答:1

目前,我必须实现底部工作表。我找到了我需要的例子。

这个组件系统组件是swift还是swiftui的? 还是我需要自己实施?

一开始我用ZStack实现,拖动手势但动画不是我期望的。 我需要有关是否存在如上图所示模态的

.sheet(isPresented: Bool, content: View)
之类的组件的信息。

swiftui modal-dialog
1个回答
0
投票

正如我们的朋友之前所说,这是一张床单。在工作表中,您可以定义新视图或调用任何视图。然后,您必须使用修饰符 .presentationDetents 接收一组PresentationDetents 来说明视图在屏幕上出现时必须停止的位置。此修饰符必须应用于工作表的内容,而不是直接应用于工作表。

struct ContentView: View {
    @State var isSheetShown = false
    var body: some View {
        VStack {
            Button("Show view"){
                isSheetShown = true
            }
        }.sheet(isPresented: $isSheetShown, content: {
            StackOfButtons()
                .presentationDetents([.medium])
        })
        .padding()
    }
}

最后,要创建堆栈类型的按钮,您可以将它们全部放入 HStack 中,分别给它们一些填充,在 HStack 中设置一点间距,并圆化堆栈的角。像这样的东西:

struct StackOfButtons: View {
    var body: some View {
        HStack(spacing: 2){
            Button {
                print("Hola que ase")
            } label: {
                Image(systemName: "list.bullet")
                    .padding()
                    .background(.thinMaterial)
                    .foregroundColor(.black)
            }
            Button {
                print("Hola que ase")
            } label: {
                Image(systemName: "list.dash")
                    .padding()
                    .background(.thinMaterial)
                    .foregroundColor(.black)
            }
            Button {
                print("Hola que ase")
            } label: {
                Image(systemName: "list.number")
                    .padding()
                    .background(.thinMaterial)
                    .foregroundColor(.black)
            }
        }.cornerRadius(10)
    }
}

Result

© www.soinside.com 2019 - 2024. All rights reserved.