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

8

我在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)

            }
}

enter image description here


@matt tableView.separatorColor = UIColor.red@matt tableView.separatorColor = UIColor.red - Mohammad Mugish
5个回答

6

尝试这个

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)

        }
    }

这是一种全局变量,因此您可以在应用程序中更改所有UITableView的分隔符颜色(“List”和“Form”在内部使用UITableView)。

我应该在哪里写这个? 在SwiftUI类中,这个不能正常工作。 - Mohammad Mugish
我根本没有使用UIKit。那么我该如何访问UITableView.appearance().separatorColor,以及在哪里访问? - Mohammad Mugish
我能知道这个解决方案的概念吗?也许有一些文章或文档,我可以了解它是如何工作的...(List和Form在幕后使用UITableView)这是一个简短而不错的解释。我想了解更多关于它的信息。 - Mohammad Mugish
2
该死的SwiftUI,在iOS 14上不起作用!#@$@#%$@#^%^ - Mette

1

2021年 - Xcode 13 / SwiftUI 3

更改分隔线颜色:

.listRowSeparatorTint(Color.pink)

隐藏分隔线:

.listRowSeparator(.hidden)

0
如果你需要在旧版本的iOS上执行此操作,请查看Introspect.
然后,您可以像下面这样做,将分隔符颜色更改为红色:
List {
    // ...
}
.introspectTableView { tableView in
    tableView.separatorColor = UIColor.red
}

如需新版本,请参见@MojtabaHosseini的答案


0

iOS 15

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

Demo


删除

从iOS 15开始,您可以通过传递hidden来使用listRowSeparator修饰符。 请阅读这个详细的答案以获取更多信息和示例。


-1

你也可以将List()元素替换为ScrollView()元素。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接