SwiftUI List进入编辑模式时如何保持单元格整体蓝色背景
解决方案
出现该问题的核心原因是编辑模式下List行自带系统默认的缩进和Cell背景,直接给Row添加的background修饰符仅能覆盖Row自身的内容宽度,缩进后露出的区域是UITableViewCell的默认背景,所以会显示为黑色。按以下两步修改即可:
- 替换行背景设置方式:删除直接加在Row上的
.background(Color(.blue)),改用listRowBackground修饰符,该修饰符会自动覆盖List行的完整宽度,不受编辑模式下的操作控件占位、缩进影响。 - 补充UITableViewCell的全局外观配置,清空系统默认的Cell背景。
关键代码修改
1. List的onAppear配置修改
.onAppear { UITableView.appearance().backgroundColor = .clear // 新增Cell背景配置 UITableViewCell.appearance().backgroundColor = .clear UITableViewCell.appearance().selectedBackgroundView = UIView() }
2. ForEach部分修改
ForEach(0..<10) { Row(item: $0) } // 全局设置所有行的背景 .listRowBackground(Color(.blue)) .onDelete { s in } .onMove { s, index in }
修改完成后进入编辑模式,整行都会保持蓝色背景,不会再出现两侧的黑色空白区域。
内容的提问来源于stack exchange,提问作者zumzum
相关产品推荐
相关产品推荐

