如何更改 SwiftUI 列表中分隔符的颜色?

Posted

技术标签:

【中文标题】如何更改 SwiftUI 列表中分隔符的颜色?【英文标题】:How can I change the colour of separator in list of SwiftUI? 【发布时间】:2019-10-25 13:27:50 【问题描述】:

我在 SwiftUI 中创建了一个列表。我想改变颜色或移除分隔符,在 UIKit 中,我们可以很容易地改变 TableView 中分隔符的颜色。

下面是SwiftUI中列表的代码和UI(图片)

@State private var users = ["Paul", "Taylor", "Adele"]

var body: some View 

    List()
                ForEach(users, id: \.self)  user in
                    HStack
                        Image("helmet").resizable().frame(width: 40, height: 40, alignment: .leading)
                        VStack(alignment : .leading)
                            Text(user).font(.custom("SFProText-Semibold", size: 14))
                            Text("Blu Connect").font(.custom("SFProText-Semibold.ttf", size: 11))
                        
                    
                
                .onDelete(perform: delete)

            

【问题讨论】:

@matt tableView.separatorColor = UIColor.red 【参考方案1】:

试试这个

var body: some View 
        UITableView.appearance().separatorColor = UIColor.blue
        return List()
            ForEach(users, id: \.self)  user in
                HStack
                    Image("helmet").resizable().frame(width: 40, height: 40, alignment: .leading)
                    VStack(alignment : .leading)
                        Text(user).font(.custom("SFProText-Semibold", size: 14))
                        Text("Blu Connect").font(.custom("SFProText-Semibold.ttf", size: 11))
                    
                
            
            .onDelete(perform: delete)

        
    

这是一种全局变量,因此您正在更改应用程序中所有 UITableViews 中的分隔符颜色(List 和 Form 在后台使用 UITableViews)

【讨论】:

我可以在哪里写这个?在 SwiftUI 类中,这不起作用。 我根本没有使用 UIKit。那么如何访问这个 UITableView.appearance().separatorColor 以及在哪里? 我能知道这个解决方案的概念是什么吗?也许有些文章或文档我了解它是如何工作的......(List 和 Form 在后台使用 UITableViews)简而言之,这是一个很好的解释。我想知道的远不止这些。 该死的 SwiftUI,这不适用于 ios 14 #@$@#%$@#^%^【参考方案2】:

2021 – Xcode 13 / SwiftUI 3

改变分隔符的颜色:

.listRowSeparatorTint(Color.pink)

隐藏分隔符:

.listRowSeparator(.hidden)

【讨论】:

【参考方案3】:

iOS 15

? 从今年开始,您可以使用listRowSeparatorTintColor 修饰符将颜色单独应用于任何分隔符,例如:


删除

从 iOS 15 开始,您可以通过传递 hidden 来使用 listRowSeparator 修饰符。 请阅读 this detailed answer 了解更多信息和示例。

【讨论】:

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

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

如何隐藏 SwiftUI 列表分隔符 [重复]

如何着色/删除 SwiftUI 列表中最后一行和倒数第二行之间的分隔符?

如何在 SwiftUI 中删除列表选择指示器和分隔符?

SwiftUI隐藏List分隔符的不同方法

SwiftUI隐藏List分隔符的不同方法