Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
实现集合视图SwiftUI_Swift_Swiftui - Fatal编程技术网

实现集合视图SwiftUI

实现集合视图SwiftUI,swift,swiftui,Swift,Swiftui,如何在SwiftUI中实现集合视图(即网格中排列的矩形) 我尝试过对一系列值进行预处理,然后使用计数器作为数组的索引,但遇到了许多问题,因此我们正在寻找一种不同的方法来实现集合视图 要在多行上换行的单元格。我有一个SegmentedControl,用于设置一行要压缩多少单元格 以下是我所拥有的: VStack { // Multiple rows ForEach((0..<requiredRows).identified(by: \.self)) { row in // Itera

如何在SwiftUI中实现集合视图(即网格中排列的矩形)

我尝试过对一系列值进行预处理,然后使用计数器作为数组的索引,但遇到了许多问题,因此我们正在寻找一种不同的方法来实现集合视图

要在多行上换行的单元格。我有一个
SegmentedControl
,用于设置一行要压缩多少单元格

以下是我所拥有的:

VStack { // Multiple rows
    ForEach((0..<requiredRows).identified(by: \.self)) { row in // Iterate over (previously calculated) required row count
        HStack(spacing: 50)) { // Row
            ForEach((0..<self.maximumOnXAxis).identified(by: \.self)) { cell in // Iterate over available cells
                MyView(
                    width: calculatedSize,
                    height: calculatedSize / 2.0,
                    colour: Color(
                        red: lst[row * self.maximumOnXAxis][0],
                        green: lst[row * self.maximumOnXAxis][1],
                        blue: lst[row * self.maximumOnXAxis][2]
                    )
                )
            }
        }
    }
VStack{//多行

ForEach((0..SwiftUI)确实支持
ScrollView
,您可以使用它来显示集合,尽管您必须管理自己的网格。
GeometryReader
方法可能会有所帮助,它允许您轻松地将“单元格”缩放到父视图的宽度和长度

作为参考,我创建了一个简单的水平滚动视图。您可以使用相同的逻辑创建网格视图:

导入快捷界面
导入PlaygroundSupport
结构MyView:View{
let items:[字符串]=[“1”、“2”、“3”、“4”、“5”]
var body:一些观点{
GeometryReader{中的几何体
滚动视图{
HStack{
ForEach(self.items.identified(by:\.self)){中的行
文本(行)
.填充(几何尺寸.宽度/5)
.背景(颜色.绿色)
}
}
}.背景(颜色.白色)
}
.padding()
.背景(颜色.红色)
}
}
让vc=UIHostingController(rootView:MyView())
PlaygroundPage.current.liveView=vc

也许这就是你要找的:


唯一缺少的功能是您无法进行“砌石”like layout

发布您已经尝试过的代码。此外,您正在尝试实现的方形网格的图片会很有帮助。Apple尚未为SwiftUI添加网格或任意布局,如ColelctionView。您可以使用
UIViewRepresentable
在SwiftUI.View中嵌入collectionView。这里有一个完整的教程:Do您想在此网格中设置一定数量的列吗?或者每个项目都有一个固定的框架吗?请提供“MyView”视图的代码!这样我们可以更好地了解您的问题。查看它会对您有所帮助!!谢谢,但我已经这样做了。我的错,请参阅编辑的问题