覆盖 SwiftUI HStack 中子元素的间距

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

我通过

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 中特定元素的间距或解决此问题的替代方法?

ios swift swiftui hstack swiftui-scrollview
1个回答
0
投票

如果

LazyHStack
在哨兵视图之前添加了不需要的间距,只需将哨兵视图移出其中即可!您应该能够将
endOfListView
标记直接放在
ScrollView
内:

    ScrollView(.horizontal) {
        LazyHStack(spacing: 10) {
            content
        }
        endOfListView
    }

它仍然出现在

LazyHStack
中的所有内容“之后”,因此它仍然应该达到其目的,即允许您在用户到达末尾时运行一些代码。

© www.soinside.com 2019 - 2024. All rights reserved.