swiftui - SwiftUI:使插入列表背景透明?
问题描述
我如何将灰色背景设置List
为完全透明以让红色通过?
struct ContentView: View {
var body: some View {
NavigationView {
ZStack {
Color.red
.ignoresSafeArea()
VStack {
HStack {
Text("Faux Title")
.font(.system(.largeTitle, design: .rounded))
.fontWeight(.heavy)
Spacer()
Button(action: {
// settings
}, label: {
Image(systemName: "gearshape.fill")
.font(.system(.title2))
})
}
.padding()
.navigationBarHidden(true)
List {
Text("One")
Text("Two")
Text("Three")
}
.listStyle(InsetGroupedListStyle())
}
}
}
}
}
解决方案
在 View 的 init() 中更改UITableView.appearance
:我们在 SwiftUI 中使用的最多的东西,例如 List 或 NavigationView,. . 它们不是纯粹的 SwiftUI,它们来自 UIKit,因此我们使用 UIKit 代码类型来改变外观。如果你记得我们应该在 UIKit 中使用这样的代码。当我们UITableView
在 init 中使用时,我们正在访问UITableView UIKit 的类,这意味着这个更改将适用于我们项目中他们正在使用 List 的任何 View。
最好的方法是您正在做的方式,设置透明颜色,然后在正文中从 SwiftUI 更改颜色!这是最方便的方法。
struct ContentView: View {
init() { UITableView.appearance().backgroundColor = UIColor.clear } // <<: here!
var body: some View {
NavigationView {
ZStack {
Color.red
.ignoresSafeArea()
VStack {
HStack {
Text("Faux Title")
.font(.system(.largeTitle, design: .rounded))
.fontWeight(.heavy)
Spacer()
Button(action: {
// settings
}, label: {
Image(systemName: "gearshape.fill")
.font(.system(.title2))
})
}
.padding()
.navigationBarHidden(true)
List {
Text("One")
Text("Two")
Text("Three")
}
.listStyle(InsetGroupedListStyle())
}
}
}
}
}
推荐阅读
- android - Kotlin 中的“ClassName::class”与“ClassName::class.java”?
- c# - 如何在 linq 中进行内部选择?
- excel - 单元格格式excel
- ruby-on-rails - mongoid:Rails 说字段存在,mongodb 说相反
- oracle - 需要查找 PLSQL 函数被执行的次数
- python - 如何将文件夹中的所有PNG图像转换为JPG而不进行插值
- php - 将属性添加到 SoapVar
- python - Matplotlib:如何以全分辨率保存图像?
- node.js - NodeJS 在特定日期执行任务,该日期与时区一起存储在 mongodb 中
- azure - 我可以使用 Azure Devops REST API 6.0 自动激活持续部署触发器以激活发布定义吗?