ScrollView使用SwiftUI获取/设置滚动位置

Osa*_*Osa 6 xcode ios swift swiftui

我试图以编程方式滚动到的特定Y位置,ScrollView单击按钮时,如何设置ScrollView位置?

ScrollView {
 Button(action: {

 }) {
    Text("Sign In").fontWeight(.heavy)        
 }
}
Run Code Online (Sandbox Code Playgroud)

我希望此按钮动作可以访问和更改ScrollView的位置。

Asp*_*eri 7

SwiftUI 2.0

由于 iOS 14 可以使用ScrollViewReader(即,可以为 ScrollView 容器中的某些特定视图分配标识符并通过ScrollViewProxy.scrollTo该视图),如下例所示

使用 Xcode 12b 测试。

struct DemoScrollToView: View {
    var body: some View {
        ScrollView {
            ScrollViewReader { sp in     // << here !!
                Button(action: {
                    withAnimation {
                        sp.scrollTo(80)            // << here !!
                    }
                }) {
                    Text("Sign In").fontWeight(.heavy)
                }

                ForEach(0..<100) { i in
                    Text("Item \(i)").padding().id(i)       // << here !!
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如何读取位置?而且如果我有一个很长的文本视图,这将不起作用。 (2认同)