问题描述
正如您在上面的屏幕截图中看到的,名称、游戏统计数据和照片之间的比例随着每一行而变化。
在我的 custom View 中使用了以下代码:
struct TopRow: View {
let model:Top
var body: some View {
HStack {
Text(model.given)
.font(.headline)
Spacer()
vstack {
Text("Elo rating: \(model.elo)")
Text("Average time: \(model.avg_time ?? "")")
Text("Average score: \(String(model.avg_score ?? 0.0))")
}
Spacer()
DownloadingImage(url: model.photo ?? "Todo")
.frame(width: 75,height: 75)
}
}
}
请问怎么改,让左边的名字有相同的宽度?
解决方法
如果所有列表行的中间内容大小都相同,则可以使用 .fixedSize
和框架。
var body: some View {
HStack {
Text(model.given)
.font(.headline)
.frame(minWidth: 0,maxWidth: .infinity) //<-- Here
Spacer()
VStack {
Text("Elo rating: \(model.elo)")
Text("Average time: \(model.avg_time ?? "")")
Text("Average score: \(String(model.avg_score ?? 0.0))")
}.fixedSize(horizontal: true,vertical: false) //<-- Here
Spacer()
DownloadingImage(url: model.photo ?? "TODO")
.frame(width: 75,height: 75)
}
}