如何在SwiftUI中创建粘性底部?

gywdnpxw  于 2023-05-21  发布在  Swift
关注(0)|答案(2)|浏览(167)

我试图在swiftUI中创建粘性页脚,其中屏幕的其他部分是可滚动的,但在页脚中有一个带有按钮和其他元素的视图,应该得到修复。

感谢您的帮助。

5lhxktic

5lhxktic1#

如果我理解正确的话,你想做的是垂直堆叠(VStack)
1.滚动视图
1.另一个VStack(带有Toggle和Button),在底部对齐:

VStack {
        ScrollView {...} // 1
        VStack {         // 2
             Toggle(...)
             Button(...)
        }
        .frame(alignment: .bottom)
}

以你为例:

struct SwiftUIView: View {
    @State private var checked: Bool = false
    let text = String(repeating: "blabla ", count: 20)
    
    var body: some View {
        VStack {
            ScrollView {
                ForEach((1...100), id: \.self) {_ in
                    Text(text)
                }
            }
            
            VStack {
                Toggle(isOn: $checked, label: {
                    Text("I have read...")
                })
                Button("Enter") {
                    // action
                }
                .frame(maxWidth: .infinity)
                .padding(.vertical)
                .background(Color.red)
            }
            .padding()
            .border(Color.black)
            .frame(alignment: .bottom)
        }
    }
}

zte4gxcn

zte4gxcn2#

iOS 15.0+macOS 12.0+Mac Catalyst 15.0+tvOS 15.0+、**watchOS 8.0+**可以使用safeAreaInset
例如:

struct ContentView: View {
    var body: some View {
        VStack {

        }
        .safeAreaInset(edge: .bottom, spacing: 0) {
            footerView
        }
    }

    var footerView: some View {
        // your content
    }
}

相关问题