我尝试使用新的(在WWDC 2023上宣布,并在iOS 17和macOS 14中可用)API来观察SwiftUI ScrollView
的滚动位置。
我有以下观点,但我不能使它正确工作。也就是说,使用scrollPosition(id:anchor)
视图修饰符会使滚动视图变得疯狂。在某些时候,在某些情况下,甚至在非常乞讨,滚动视图只是开始跳跃,并在尝试滚动时结结巴巴。在这里查看屏幕记录:https://twitter.com/krajaac/status/1714191037927764149
代码:
ScrollView(.vertical) {
LazyVGrid(
columns: [.init(.adaptive(minimum: self.itemSize.width), spacing: Constants.columnSpacing, alignment: .center)],
alignment: .center,
spacing: Constants.sectionSpacing
) {
ForEach(self.sectionData) { section in
Section(section.title) {
ForEach(section.items) { item in
Text(item.text)
.frame(width: self.itemSize.width, height: self.itemSize.height)
}
}
}
}
.scrollTargetLayout()
}
.scrollPosition(id: self.$currentItemID) // TODO: Comment out this line to make the scrolling work
整个代码可以在我的GitHub repo中找到:https://github.com/tomaskraina/feedbackassistant.apple.com/blob/master/ScrollPositionVsLazyVGrid/ScrollPositionVsLazyVGrid/ContentView.swift
是我做错了什么,还是SwiftUI中的bug?
1条答案
按热度按时间zmeyuzjn1#
我还没有弄清楚这个问题的根本原因,但是在这样的自定义
View
中“隐藏”ScrollView
--LazyVGrid
的内容可以修复滚动的问题。在这里查看屏幕记录:https://mastodon.social/@tomkraina/111251021544613267