SwiftUI-ScrollView的使用

377 阅读1分钟

滚动视图可以水平、垂直或双向滚动。当我们将视图放置在滚动视图中时,它们会自动计算出该内容的大小,以便用户可以从一个边缘滚动到另一边缘

image.png

让整个区域可滚动。为了获得这种行为,我们应该让其VStack占用更多空间

image.png

现在您可以点击并拖动屏幕上的任意位置,就可以滚动。这更加人性化。

当我们将子视图添加到滚动视图时,它们会立即且全部同时创建。 如果你想避免这种情况发生,有一个替代方案:

LazyVStack(.vertical) {

}

LazyHStack(.horizontal) {

}

它们的使用方式与常规堆栈完全相同,但会按需加载其内容 - 在实际显示之前它们不会创建视图,因此最大限度地减少了所使用的系统资源量。

有一个重要的布局差异:惰性堆栈始终占用布局中可用的空间,而常规堆栈仅占用所需的空间。这是故意的,因为如果加载需要更多空间的新视图,它会阻止惰性堆栈调整其大小。

但它会产生一个小烦恼:当您的视图在单个屏幕上很好地适应时,它们仍然会在滚动时稍微弹动。
.scrollBounceBehavior(.basedOnSize) 有了这个,当我们实际滚动内容时,我们就会得到很好的滚动弹跳,否则滚动视图就像不存在一样。