如何在 SwiftUI 列表行中具有相同的比例?

Posted

技术标签:

【中文标题】如何在 SwiftUI 列表行中具有相同的比例?【英文标题】:How to have same proportions in a SwiftUI List row? 【发布时间】:2021-05-15 09:03:37 【问题描述】:

作为一个 Swift 新手,我不明白如何解决布局问题 -

正如你在上面的截图中看到的,名字、游戏数据和照片之间的比例随着每一行而变化。

在我的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)
        
    

请问如何修改,让左边的名字等宽?

还有中间的统计数据? (两个宽度不必相等)。

【问题讨论】:

【参考方案1】:

如果所有列表行的中间内容大小相同,则可以使用.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)
    

【讨论】:

以上是关于如何在 SwiftUI 列表行中具有相同的比例?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 列表行中的多个按钮

如何使用 SwiftUI 中的图像修复 NavigationView 列表行中增加的高度"

在列表行中制作等宽的 SwiftUI 视图

SwiftUI 列表中的可编辑文本字段

如何在 swiftUI 中创建具有多列的列表?

SwiftUI .rotation3dEffect 动画在 Apple Watch 列表行中没有所需的深度效果