【发布时间】:2021-01-29 15:26:48
【问题描述】:
我制作了一个“RowView”,并希望使用 swiftUI 显示列表中的每一行。
因此我编写了代码。基于 GeometryReader,我希望行占据屏幕高度的 1/4,然后是全宽,带有填充和圆角。
我写的代码如下:
var body: some View {
HStack {
GeometryReader {g in
ZStack {
Image("Dummy")
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: g.size.width, height: g.size.height/4)
.frame(width: g.size.width)
.clipped(antialiased: true)
.cornerRadius(25)
VStack {
HStack {
Spacer()
Image(systemName: "photo.on.rectangle.angled")
.resizable()
.aspectRatio(contentMode: .fit)
.frame(width:g.size.height/18, height: g.size.height/18)
Text("A Long Titlte here................")
.font(.title2)
.bold()
.minimumScaleFactor(0.1)
Spacer()
}.background(Color.red)
}.frame(width: g.size.width, height: g.size.height/6)
.frame(width: g.size.width, height: g.size.height/12)
.background(Color.white)
.opacity(0.7)
.offset(y:g.size.height/18)
}
}.padding()
}
}
在我创建了这个 RowView 之后,我创建了 ListView。
代码如下:
var body: some View {
NavigationView {
GeometryReader{ g in
List {
ForEach(modelData.rows) { row in
RowView(property: row)
}
}.navigationBarTitle("ListView")
}
}
}
但是,行高并没有想象中的那么高,而是缩小了。
我不想对行的高度进行“硬编码”。有什么方法可以根据我在 RowView 中设置的内容制作显示每个 RowView 的 ListView?
【问题讨论】:
-
如果给列表视图中的行指定高度 g.size.height/4 会发生什么?