SwiftUI - 如何在编辑模式下更改列表的背景
Posted
技术标签:
【中文标题】SwiftUI - 如何在编辑模式下更改列表的背景【英文标题】:SwiftUI - How to change the background of a list in edit mode 【发布时间】:2020-12-17 06:15:04 【问题描述】:我想更改列表在.editMode
中时的背景颜色。到目前为止,我尝试的是通过以下方式初始化视图来更改列表的.background
的一般方法:
init()
UITableView.appearance().backgroundColor = .clear
UITableView.appearance().separatorColor = .none
UITableView.appearance().separatorStyle = .none
并使用.background
修饰符设置列表的背景颜色。
这是有效的,但是一旦在.editMode
中显示Color(.systemsBackground)
(黑色)而不是我的自定义Color
(
Picture of List in editMode)。
我的列表代码是:
List
ForEach(categoryVM.selectedCategories) category in
NavigationLink(destination: EditCategoryColorView(category: category, editType: .edit, name: category.name, color: category.color))
ZStack
HStack
Text("\(category.name)")
Spacer()
Color("\(category.color)")
.aspectRatio(1, contentMode: .fit)
.cornerRadius(6)
.frame(width: 40, height: 40)
.padding(3)
.onDelete(perform: categoryVM.deleteCategory)
.onMove(perform: move)
.foregroundColor(colorScheme == .dark ? Color.white : Color.black)
.background(colorScheme == .dark ? Color("DarkGrayApp") : Color.white)
.listRow()
.padding(.vertical)
// to enable edit mode
EditButton()
在代码中.listRow()
是一个扩展,所以行填充了整个可用空间。
extension View
func listRow() -> some View
self.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .leading)
.listRowInsets(EdgeInsets(top: -1, leading: -1, bottom: -1, trailing: -1))
.background(Color(.systemBackground))
我也尝试更改扩展程序中的颜色,但没有成功。
知道如何在.editMode
中更改一次背景颜色吗?
谢谢!
【问题讨论】:
【参考方案1】:只是更新:.listRowBackground(Color.clear)
为我解决了问题。
【讨论】:
以上是关于SwiftUI - 如何在编辑模式下更改列表的背景的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI Textfield - 如何在编辑模式下设置文本字段的背景颜色以清除
如何允许对不在编辑模式下的 SwiftUI 列表中的行进行重新排序?
SwiftUI - 如何在编辑模式下避免列表中的行缩进,但不使用 onDelete? (附代码/视频)