我试图在Mac OS的SwiftUI的ListView中显示一行。
但是,我的问题是该行周围包含填充。.我想将其拉伸到ListView
的边界。
Apple在其示例中使用.listRowInsets(EdgeInsets())
..但是仅在iOS上显示。对我来说,它不适用于MacOS。
What is a smart pointer and when should I use one?
我的行有一个红色边框以可视化该问题,我希望将其一直拉到列表行的边界,因此填充整个蓝色行。 在MacOS中可以吗?
谢谢。
答案 0 :(得分:9)
目前,我发现只有解决方法(.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)
}
}
答案 1 :(得分:0)
我在行尾添加了这段代码,填充缩小了!!!
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。