列表 iOS 14 SwiftUI 中的额外间距
Posted
技术标签:
【中文标题】列表 iOS 14 SwiftUI 中的额外间距【英文标题】:Extra Spacing in List iOS 14 SwiftUI 【发布时间】:2020-09-16 15:48:35 【问题描述】:我正在尝试从 ListView 中删除外部空间(标记为红色)。
此问题出现在 ios 14 和 Xcode 12 GM 中。
这是我正在使用的代码:
struct ContentView: View
var menuItems:[String] = ["Item 1", "Item 2", "Item 3"]
var body: some View
List(self.menuItems, id:\.self) title in
MenuRow(title: title)
struct MenuRow:View
var title:String
var body: some View
HStack(alignment: .center)
Text(title)
.foregroundColor(Color.black)
.font(Font.system(size: 14,
weight: .regular,
design: .default))
Spacer()
Text(title)
.foregroundColor(Color.black)
.font(Font.system(size: 14,
weight: .regular,
design: .default))
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading)
.listRowInsets(EdgeInsets())
.background(Color.white)
【问题讨论】:
如果您想要自定义布局,我强烈建议您使用 LazyVStack + ScrollView(除了下面答案中的 ForEach)。默认的List
控件具有很难删除的内置样式。
但是你会失去许多 List 功能,而且大多数情况下你会失去单元格的可重用性。
【参考方案1】:
要使.listRowInsets
工作,您需要在List
中使用ForEach
:
List
ForEach(self.menuItems, id:\.self)
MenuRow(title: $0)
【讨论】:
您可以删除重复的listRowInsets
,因为它已经存在于MenuRow
中【参考方案2】:
这对我有用。对于列表添加:
List
...
.environment(\.defaultMinListRowHeight, 23)
【讨论】:
以上是关于列表 iOS 14 SwiftUI 中的额外间距的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI List with Divider 但在 MacOS 中没有额外的 Insets