繁体   English   中英

SwiftUI macOS 列表行删除填充

[英]SwiftUI macOS List Row removing padding

我正在尝试在 SwiftUI for MacOS 中的 ListView 中显示一行。 但是,我的问题是该行包含它周围的填充。 我想将它拉伸到我的ListView的边界。

Apple 在他们的示例中使用.listRowInsets(EdgeInsets()) 但是,这仅在 iOS 上显示。 对我来说,它不适用于 macOS。

我的行有一个红色边框来可视化问题。 我希望它一直拉伸到列表行的边界,所以填充整个蓝色行。 这在 macOS 中可能吗?

提前致谢。

预览

现在我只找到了解决方法( .listRowInsets应该真正完成这项工作,因此值得向 Apple 提交反馈):

演示

struct TestListRow: View {
    var body: some View {
        List {
            ForEach (0..<3) { i in
                HStack {
                    Text("Test row \(i)").font(.largeTitle)
                    Spacer()
                }
            }
            .listRowBackground(Color.green)
            .border(Color.red)
            .padding(.horizontal, -8)   // << workaround !!
        }.environment(\.defaultMinListRowHeight, 40)
        .border(Color.yellow)
    }
}

我在行尾添加了这段代码,填充缩小了!!!

    Spacer()
    Text(" ")
    .padding()

示例代码

import SwiftUI


struct testViews1: View {
    var body: some View {
        List {
            ForEach (0..<3) { i in
                HStack {
                    Text("row \(i)")
                    Spacer()
                }
                .background(Color.red)
                .frame(height: 30)  
            }
        }
    }
}


struct testViews2: View {
    var body: some View {
        List {
            ForEach (0..<3) { i in
                HStack {
                    Text("row \(i)")
                    Spacer()
                    Text(" ")
                        .padding()   
                }
                .background(Color.red)
                .frame(height: 30)
                
            }
        }
    }
}

struct testViews_Previews: PreviewProvider {
    static var previews: some View {
        testViews1()
            .frame(height: 150)
        testViews2()
            .frame(height: 150)

    }
}

输出在此处输入图片说明

它适用于 SwiftUI 1。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM