我通过
ScrollView
和 HStack
获得了水平滚动用户体验。我想找到一种方法来意识到用户已经到达HStack
的末尾。
为了实现这一目标,我使用了这个解决方案(欢迎更好的解决方案)
该功能按预期工作,我可以意识到用户何时位于滚动视图的末尾。
这是我到目前为止的代码
var body: some View {
ScrollView(.horizontal) {
LazyHStack(spacing: 10) {
content
endOfListView
}
}
}
private var endOfListView: some View {
Color.clear
.frame(width: .zero, height: .zero)
.onAppear {
didReachEnd = true
}
}
我现在遇到的问题是,即使
endOfListView
的框架为 .zero
,由于 HStack
构造函数中设置的间距,还额外添加了 10 个间距。
我尝试将这个
.padding(.leading, -10)
添加到 endOfListView
中,但是,这没有帮助,间距仍然存在。
我也遇到了类似的问题,但不关心间距,所以我无法应用它。
有没有办法覆盖 HStack 中特定元素的间距或解决此问题的替代方法?
如果
LazyHStack
在哨兵视图之前添加了不需要的间距,只需将哨兵视图移出其中即可!您应该能够将 endOfListView
标记直接放在 ScrollView
内:
ScrollView(.horizontal) {
LazyHStack(spacing: 10) {
content
}
endOfListView
}
它仍然出现在
LazyHStack
中的所有内容“之后”,因此它仍然应该达到其目的,即允许您在用户到达末尾时运行一些代码。