这是我的列表的代码:
import SwiftUI
struct PaymentScreen: View {
init() {
UITableView.appearance().separatorStyle = .none
UITableViewCell.appearance().backgroundColor = .black // I can change color of this paddings here
}
var body: some View {
return VStack (alignment: .center) {
List (Terminal.terminals, id: \.self.distance) { terminal in
PayTerminalAdapter(terminal: terminal).background(Color.white)
}
}
}
}
我的列表的屏幕截图:
我无法删除列表元素之间的黑色开头和结尾填充以及填充。当我使用ForEach时(我的终端阵列很长)-填充没有问题,但是它的工作速度如此缓慢,因此ForEach对我来说是一个不好的选择。如何删除列表中的黑色填充?
答案 0 :(得分:1)
也许您正在寻找.listRowInsets
修饰符。
解决方案:
List {
ForEach(Terminal.terminals, id: \.self.distance) {
PayTerminalAdapter(terminal: terminal).background(Color.white)
}
.listRowInsets(EdgeInsets(top: 1, leading: 2, bottom: 1, trailing: 2))
}
在上面,您可能已经注意到List(data:)
现在只是List(content:)
,并且数据已移动到ForEach(data:id:)
。
我不确定是否存在SwiftUI错误,但是.listRowInsets
仅适用于单个项目。然后,该单个项目可以有多个项目,并且仍然可以重复使用,因此不用担心。
但是,作为测试,即使以下内容看起来应该可以工作,也不能:
示例(不起作用):
List(0...100, id: \.self) { _ in
Text("Custom row inset not being applied")
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.gray)
.listRowInsets(EdgeInsets(top: 1, leading: 2, bottom: 1, trailing: 2))
}
因此,将您的数据源放在ForEach
中,并在其上应用.listRowInsets
。
示例(有效):
List {
ForEach(0...100, id: \.self) { _ in
Text("Custom row inset being applied")
.frame(maxWidth: .infinity, maxHeight: .infinity)
.background(Color.gray)
}
.listRowInsets(EdgeInsets(top: 1, leading: 2, bottom: 1, trailing: 2))
}
答案 1 :(得分:0)
您应该为此更改.listRowBackground()
。