This question already has answers here:
SwiftUI List color background
(8个答案)
1年前关闭。
我正在尝试使用以下代码将 View 背景色设置为黑色
该 View 托管在混合UIKit-SwiftUI Storyboard中,因此该特定 View 嵌入在Hosting Controller 中
我已经尝试过想到的
iOS 13
所有SwiftUI的
请注意,顶部和底部白色区域是安全的,您可以使用
(8个答案)
1年前关闭。
我正在尝试使用以下代码将 View 背景色设置为黑色
struct RuleList: View {[![enter image description here][1]][1]
private var presenter: ConfigurationPresenter?
@ObservedObject
private var viewModel: RowListViewModel
init(presenter: ConfigurationPresenter?, viewModel: RowListViewModel) {
self.presenter = presenter
self.viewModel = viewModel
}
var body: some View {
List(viewModel.configurations) { configuration in
RuleListRow(website: configuration.website).background(Color.black)
}.background(Color.black)
}
}
struct RuleListRow: View {
var website: Website
@State private var websiteState = 0
var body: some View {
VStack {
Text(website.id).foregroundColor(.white)
Picker(website.id, selection: $websiteState) {
Text("Permis").tag(0)
Text("Ascuns").tag(1)
Text("Blocat").tag(2)
}.pickerStyle(SegmentedPickerStyle()).background(Color.crimson)
}.listRowBackground(Color.green)
}
}
该 View 托管在混合UIKit-SwiftUI Storyboard中,因此该特定 View 嵌入在Hosting Controller 中
class ConfigurationHostingController: UIHostingController<RuleList> {
private var presenter: ConfigurationPresenter = ConfigurationPresenter()
required init?(coder: NSCoder) {
super.init(rootView: RuleList(presenter: presenter, viewModel: presenter.rowListViewModel))
}
}
我已经尝试过想到的
.background
,.listRowBackground(Color.black)
和.colorMultiply(.black)
的任何组合,而我得到的最好的是最佳答案
iOS 14
在iOS 14中,您可以考虑使用LazyVStack
代替列表:
ScrollView {
LazyVStack {
ForEach((1...100), id: \.self) {
Text("Placeholder \($0)")
}
}
.background(Color.yellow)
}
请记住,LazyVStack
是惰性的,不会一直渲染所有行。因此,它们非常出色,并由Apple自己在WWDC 2020中提出。iOS 13
所有SwiftUI的
List
都由iOS中的UITableView
支持。因此您需要更改tableView的背景颜色。但是,由于Color
和UIColor
的值略有不同,因此您可以摆脱UIColor
。struct ContentView: View {
init() {
UITableView.appearance().backgroundColor = .clear // tableview background
UITableViewCell.appearance().backgroundColor = .clear // cell background
}
var body: some View {
List {
,,,
}
.background(Color.yellow)
}
}
现在,您可以使用您想要的任何背景(包括所有Color
)请注意,顶部和底部白色区域是安全的,您可以使用
.edgesIgnoringSafeArea()
修饰符删除它们。关于swiftui - SwiftUI列表背景色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58591853/
10-14 16:33