在SwiftUI中,可以使用GeometryReader来设置嵌入在ForEach中的HStack的相对宽度。GeometryReader是一个视图容器,可以提供有关其父视图的几何信息。
要设置HStack的相对宽度,可以使用GeometryReader包装HStack,并在其内部使用GeometryProxy来获取父视图的几何信息。然后,可以使用GeometryProxy的size属性来计算HStack的相对宽度。
下面是一个示例代码:
struct ContentView: View {
let data = ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"]
var body: some View {
GeometryReader { geometry in
VStack {
ForEach(data, id: \.self) { item in
GeometryReader { itemGeometry in
HStack {
Text(item)
.frame(width: itemGeometry.size.width * 0.5, height: 50)
.background(Color.blue)
Spacer()
}
.frame(width: geometry.size.width, height: 50)
}
}
}
}
}
}
在上面的示例中,我们首先使用GeometryReader包装了整个视图,并在其中创建了一个垂直的VStack。然后,我们使用ForEach遍历数据数组,并在其中使用另一个GeometryReader来包装HStack。在HStack中,我们使用itemGeometry.size.width * 0.5来设置Text的宽度为父视图宽度的一半。最后,我们使用geometry.size.width来设置HStack的宽度为父视图的宽度。
这样,我们就可以在SwiftUI中设置嵌入在ForEach中的HStack的相对宽度了。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云