首页 > 解决方案 > ScrollView 使用 SwiftUI 获取/设置滚动位置

问题描述

我正在尝试以编程方式滚动到 a 中的特定 Y 位置ScrollView,当单击按钮时,如何设置ScrollView位置?

ScrollView {
 Button(action: {

 }) {
    Text("Sign In").fontWeight(.heavy)        
 }
}

我想要这个按钮操作,以访问和更改 ScrollView 位置。

标签: iosswiftxcodeswiftui

解决方案


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 !!
                }
            }
        }
    }
}

推荐阅读