如何从 WatchOS 的 SwiftUI 列表中删除分隔符?

Posted

技术标签:

【中文标题】如何从 WatchOS 的 SwiftUI 列表中删除分隔符?【英文标题】:How to remove separators from SwiftUI list in WatchOS? 【发布时间】:2020-02-04 18:20:44 【问题描述】:

如何从 WatchOS 中的 SwiftUI 列表中删除分隔符?

我已经在***中查看了一些答案,他们建议使用

    UITableView.appearance().tableFooterView = UIView()
    
    UITableView.appearance().separatorStyle = .none

看起来它们只适用于 ios,显然它们不适用于 WatchOS SwiftUI 列表。有什么方法可以自定义吗?

编辑 -

UITableView.appearance().separatorStyle = .none

显然上面的代码并没有隐藏 iOS 14 中的分隔符。

【问题讨论】:

【参考方案1】:

我不确定 WatchOS List 上的分隔符是什么意思,但可能您只需要为第一行设置如下所示的盘片颜色

var body: some View 
    List 
        Text("Hello, World!").listRowPlatterColor(Color.black)
        Text("Hello, World!")
        Text("Hello, World!")
    

【讨论】:

它删除了背景颜色。两个电池之间仍然有分隔空间。我需要删除它们。我所做的是对单元格使用边缘插入,并为顶部插入给出了一个负值,但我不确定它是否是正确的方法。【参考方案2】:

您可以使用 listRowBackground(),就像 Paul Hudson 在 Hacking with Swift 上展示的那样

List 
    ForEach(0..<10) 
        Text("Row \($0)")
    
    .listRowBackground(Color.red)

编辑以突出显示评论:

目前没有修改List项目间距的API。您要么必须创建自定义ListStyle,要么不使用List。 如果您将ScrollViewVStack 一起使用,您将能够获得类似的结果。这种情况下你可以在VStack上设置spacing来达到你想要的效果。

【讨论】:

但是,单元格之间的间距呢?单元格之间似乎有一个默认空间。不过我不想要。 目前没有API可以修改。您要么必须创建自定义 ListStyle,要么不使用 List。如果您将 ScrollView 与 VStack 一起使用,您将能够获得类似的结果。 作为参考,WatchKitUITableView 的等效项是 WKInterfaceTable,但正如您所见,外观代理 API UIAppearanceWatchOS 上不存在。 是的,正如@Tristan 指定的那样,使用带有 VStack 的 ScrollView 是实现此目的的唯一有效方法。

以上是关于如何从 WatchOS 的 SwiftUI 列表中删除分隔符?的主要内容,如果未能解决你的问题,请参考以下文章

watchOS 上的 SwiftUI 表单:点击手势间歇性失败

在SwiftUI中点击watchOS应用程序时如何更改图像

SwiftUI:在 Tabview 的 WatchOS 8.1RC 上立即弹出 NavigationLink

使用 SwiftUI 在 WatchOS 中适配 UI

在watchOS中使用.listRowBackground时如何将cornerRadius添加到SwiftUI List Cell?

使用 SwiftUI 在 WatchOS 中实现从主控制器导航到基于页面的控制器的问题