如何在 SwiftUI 中动态调整可垂直滚动的 VStack 中的一行中的项目数?

Posted

技术标签:

【中文标题】如何在 SwiftUI 中动态调整可垂直滚动的 VStack 中的一行中的项目数?【英文标题】:How to dynamically adjust the number of items in a row within a vertically scrollable VStack in SwiftUI? 【发布时间】:2020-07-10 14:05:21 【问题描述】:

输入:我有一个视图列表,其中每个视图都是一个图像和文本的 VStack

要求:我想显示它们垂直滚动的视图。但是,每一行应该有多个这样的视图(基于可以容纳多少)。 [请注意,由于文本不同,视图的大小不相等]。它不应该是水平滚动的

问题:如何根据可以容纳的字符串数动态调整一行中的字符串数?以下图为例

在此先感谢您的投入和感谢!

【问题讨论】:

上面提供的截图有什么问题?这些是多行,每行包含多个堆叠在 HStack 中的元素。 嗨@davidev,是的,总体 VStack 中每一行中的元素都在 HStack 中。我想知道的是是否有办法根据屏幕大小和文本大小动态调整每个 HStack 中的项目数 【参考方案1】:

我建议你使用带有自适应类型的 LazyVGrid。

这里不再需要使用List,只需要使用视图数组

这是一项新功能,因此它可以在 ios14.0 及更高版本中运行

Struct MainView : View 
    private let columnGrid = 
        GridIten(.adaptive(minimum:50)) //here you can put minimum width size value unto you.
    
    var body: some View 
       LazyVGrid(columns: columnGrid) 
        //your view with image will come here
        
    
 

【讨论】:

嗨@Reed,感谢您的投入。很高兴知道在 iOS14 中有一种可能的方法来做到这一点。我希望有办法在 iOS13 中也能做到这一点

以上是关于如何在 SwiftUI 中动态调整可垂直滚动的 VStack 中的一行中的项目数?的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI 中,如何通过动态变化的滚动区域来缩放 scrollView 内的内容?

SwiftUI Drag 事件如何限制仅检测水平/垂直滚动

SwiftUI:动态设置图像的大小

在 SwiftUI ScrollView 中停止垂直滚动

在 SwiftUi 中水平组合和打破垂直滚动视图?

如何在 SwiftUI 中更改滚动视图的滚动方向?