更改 SwiftUI 中 SwipeAction 标签的前景色

问题描述 投票:0回答:1

我正在创建一个针对 iOS 15+ 的 SwiftUI 应用程序,需要使用

.swipeActions(_:)
我注意到的一件事是,每当我添加
.foregroundColor(_:)
来更改滑动操作
Label
颜色时,它都不会应用。有谁知道如何将标签颜色覆盖为提供的颜色?短暂性脑缺血发作。

我的代码重现我的问题(请记住我的最低部署目标是 iOS 15):

struct SecondView: View {
    var body: some View {
        VStack {
            List {
                ForEach(1..<Contact.contacts.endIndex) { index in
                        Text("Cell number \(index)")
                        .padding(40)
                    }
                    .swipeActions(edge: .leading) {
                        Button {
                            // Do something
                        } label: {
                            Label(title: {
                                Text("Left Swipe")
                                    .foregroundColor(.black) // <--- Doesnt Work
                            }, icon: {
                                Image(systemName: "pin")
                                    .foregroundColor(.black)  // <--- Doesnt Work
                            })
                        }
//                        .foregroundColor(.black)  // <--- Doesnt Work
                        .tint(.gray)
//                        .foregroundColor(.black)  // <--- Doesnt Work
                    }
                    .swipeActions(edge: .trailing) {
                        Button {
                            // Do something
                        } label: {
                            Label("Delete", systemImage: "trash")
                                .foregroundColor(.white)
                        }
                        .tint(.red)
                    }
                }
            }
            .listStyle(GroupedListStyle())
        }
    }


struct SecondView_Previews: PreviewProvider {
    static var previews: some View {
        SecondView()
    }
}

我已对所有不起作用的

.foregroundColor()
添加了注释,并注释掉了其中的一些。

ios swift swiftui
1个回答
0
投票
MessageCell(message: message)
.swipeActions(edge: .leading) {
    Button { store.toggleUnread(message) } label: {
        if message.isUnread {
            Label("Read", systemImage: "envelope.open")
        } else {
            Label("Unread", systemImage: "envelope.badge")
        }
    }
    .tint(.blue)
}
.swipeActions(edge: .trailing) {
    Button(role: .destructive) { store.delete(message) } label: {
        Label("Delete", systemImage: "trash")
    }
    Button { store.flag(message) } label: {
        Label("Flag", systemImage: "flag")
    }
    .tint(.orange)
}
© www.soinside.com 2019 - 2024. All rights reserved.