SwiftUI 是苹果推出的一个声明式 UI 框架,用于构建 macOS、iOS、watchOS 和 tvOS 应用程序。scrollTo
是 SwiftUI 中的一个方法,用于在 ScrollView
或 LazyVGrid
等滚动视图中滚动到指定的锚点位置。
scrollTo
方法可以用于以下类型的滚动视图:
ScrollView
LazyVGrid
LazyHGrid
当你需要在滚动视图中快速定位到某个特定元素时,可以使用 scrollTo
方法。例如,在一个长列表中,用户点击某个项目后,自动滚动到该项目的位置。
以下是一个使用 scrollTo
方法的示例代码:
import SwiftUI
struct ContentView: View {
@State private var scrollToItem = 0
var body: some View {
ScrollView {
VStack(spacing: 20) {
ForEach(0..<100, id: \.self) { index in
Text("Item \(index)")
.frame(height: 50)
.background(Color.gray.opacity(0.2))
.onTapGesture {
scrollToItem = index
}
}
}
}
.frame(height: 300)
.background(Color.white)
.animation(.spring(), value: scrollToItem)
.onPreferenceChange(ScrollToPreferenceKey.self) { value in
if let index = value {
withAnimation(.spring()) {
let offset = CGFloat(index * 50)
ScrollViewReader { proxy in
proxy.scrollTo(.offset(x: 0, y: offset), anchor: .top)
}
}
}
}
}
}
struct ScrollToPreferenceKey: PreferenceKey {
static var defaultValue: Int? = nil
static func reduce(value: inout Int?, nextValue: () -> Int?) {
value = nextValue()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
scrollTo
方法没有按预期滚动到指定位置原因:
.top
或 .center
。scrollTo
方法。解决方法:
scrollTo
方法:scrollTo
方法:通过以上方法,你应该能够正确地使用 scrollTo
方法在 SwiftUI 中滚动到指定的锚点位置。
领取专属 10元无门槛券
手把手带您无忧上云