如何缩放 SwiftUI 列表行高以匹配列表的宽度

Posted

技术标签:

【中文标题】如何缩放 SwiftUI 列表行高以匹配列表的宽度【英文标题】:How to scale SwiftUI List row height to match the width of the list 【发布时间】:2020-06-28 06:05:08 【问题描述】:

我在 SplitView 中有一个 List,并且希望 List 行的高度随 ScrollView 的宽度而缩放。如何在 SwiftUI 列表中执行此操作。

不确定使用GeometryReader 是否正确,但它似乎有效。

struct BrowserView: View 
    @ObservedObject var controller = FileController.shared
    
    var body: some View 
        GeometryReader geometry in
            List(selection: self.$controller.selectedObject) 
                ForEach(self.controller.thumbNails, id:\.self)  object in
                    AssetThumbnail(object: object
                    ).aspectRatio(contentMode: .fit).frame(idealHeight: geometry.size.width * 2 / 3 )
                        .tag(object.id)
                    
                
            
        
    

【问题讨论】:

【参考方案1】:

其实在这里使用GeomentryReader并没有什么坏处,但是看起来是多余的,因为从下面的例子中可以看出.aspectRatio就足够了

struct TestListRowHeightAsWidth: View 
    var body: some View 
        List 
            ForEach(0..<10, id:\.self)  object in
                Image(systemName: "\(object).square")
                    .resizable()
                    .aspectRatio(contentMode: .fit)
            
        
    

【讨论】:

抱歉,这是 macOS - 由于图像不是全宽,因此似乎无法正常工作,因此由于某种原因,行似乎包含高度。

以上是关于如何缩放 SwiftUI 列表行高以匹配列表的宽度的主要内容,如果未能解决你的问题,请参考以下文章

如何设置表格中的行高以在 python-docx 中修复?

如何使 SwiftUI 列表行背景颜色扩展整个宽度,包括安全区域之外

如何设置PDF iTextSharp的段落或字体行高

如何在 SwiftUI 中嵌入 ForEach 的 HStack 中设置相对宽度?

如何在 SwiftUI 中圆角并减小列表的大小?

SwiftUI 列表行布局