实现集合视图SwiftUI
如何在SwiftUI中实现集合视图(即网格中排列的矩形) 我尝试过对一系列值进行预处理,然后使用计数器作为数组的索引,但遇到了许多问题,因此我们正在寻找一种不同的方法来实现集合视图 要在多行上换行的单元格。我有一个实现集合视图SwiftUI,swift,swiftui,Swift,Swiftui,如何在SwiftUI中实现集合视图(即网格中排列的矩形) 我尝试过对一系列值进行预处理,然后使用计数器作为数组的索引,但遇到了许多问题,因此我们正在寻找一种不同的方法来实现集合视图 要在多行上换行的单元格。我有一个SegmentedControl,用于设置一行要压缩多少单元格 以下是我所拥有的: VStack { // Multiple rows ForEach((0..<requiredRows).identified(by: \.self)) { row in // Itera
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”视图的代码!这样我们可以更好地了解您的问题。查看它会对您有所帮助!!谢谢,但我已经这样做了。我的错,请参阅编辑的问题