使用 swift UI 滚动到某个偏移量

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

我下面的代码使用一个长键和一些其他修饰符来在用户滚动时获取滚动视图偏移。我想在视图出现时将滚动视图自动滚动到某个浮动偏移量。我下面的代码除了编译之外什么都不做。

import SwiftUI

struct ContentView: View {
    @State private var offsetOne: Double = 0
    @State private var offsetTwo: Double = 50
    @State private var arr: Array = [//content added from API]

    var body: some View {
        mainInterFaceView
    }
}
extension FeedView{
    var mainInterFaceView: some View{
        VStack(spacing: 0){
            ZStack(){
                ScrollViewReader { proxy in
                    ScrollView {
                        LazyVStack {
                            ForEach(arr.indices, id: \.self) { i in
                                myView(content: i)                     
                            }
                        }
                        .background(GeometryReader {
                            Color.clear.preference(key: ViewOffsetKey.self,
                                                   value: -$0.frame(in: .named("scroll")).origin.y)
                        })
                        .onPreferenceChange(ViewOffsetKey.self) {
                             offsetOne = $0
                        }
                        .onAppear{
                            proxy.scrollTo(offsetTwo, anchor: .top) //does not scroll
                        }
                    }
                    .coordinateSpace(name: "scroll")
                }
            }
        }
    }
}


struct ViewOffsetKey: PreferenceKey {
    typealias Value = CGFloat
    static var defaultValue = CGFloat.zero
    static func reduce(value: inout Value, nextValue: () -> Value) {
        value += nextValue()
    }
}
swift swiftui scrollview
© www.soinside.com 2019 - 2024. All rights reserved.