使可扩展列表的背景变得透明似乎是不可能的。在 *** 上测试了所有解决方案
Posted
技术标签:
【中文标题】使可扩展列表的背景变得透明似乎是不可能的。在 *** 上测试了所有解决方案【英文标题】:It appears impossible to make the background of an expandable list transparent. Tested all solutions on *** 【发布时间】:2021-06-11 16:52:25 【问题描述】:这是代码
struct Lumba:Identifiable
var id = UUID()
var name:String
var subLumba:[Lumba]?
struct ContentView: View
let array = [
Lumba(name:"aaa", subLumba: [
Lumba(name: "a1", subLumba: nil), Lumba(name: "a3", subLumba: nil), Lumba(name:"a3", subLumba: nil)]),
Lumba(name:"bbb", subLumba: nil)
]
var body: some View
ZStack
List(array, children: \.subLumba) scrollItem in
Text(scrollItem.name)
.listRowBackground(Color.clear)
.background(Color.clear)
.listRowBackground(Color.clear)
.background(Color.red)
.onAppear()
UITableView.appearance().separatorStyle = .none
UITableView.appearance().backgroundColor = UIColor.clear
UITableViewCell.appearance().backgroundColor = UIColor.clear
此代码包含 Stack Overflow 上回答说要添加、使列表透明的内容,以及大量冗余代码。
列表继续为白色。
*** 上的解决方案适用于简单列表,但不适用于可扩展列表。
【问题讨论】:
【参考方案1】:将您所有的UITableViewCell.appearance().
移动到 init() 中,并使用ForEach
替换listRowBackground
struct ContentView: View
let array = [
Lumba(name:"aaa", subLumba: [
Lumba(name: "a1", subLumba: nil), Lumba(name: "a3", subLumba: nil), Lumba(name:"a3", subLumba: nil)]),
Lumba(name:"bbb", subLumba: nil)
]
init() //< -- Here
UITableView.appearance().separatorStyle = .none
UITableView.appearance().backgroundColor = UIColor.clear
UITableViewCell.appearance().backgroundColor = UIColor.clear
var body: some View
ZStack
List //< -- Here
ForEach(array, id: \.id) scrollItem in //< -- Here
Text(scrollItem.name)
.listRowBackground(Color.clear) //< -- Here
.background(Color.red)
已测试:XCode 12.3、ios 14.3
【讨论】:
如果你检查我的代码,它会生成一个可扩展的列表。你的,不幸的是,不要。当您使代码生成可扩展列表时,您的解决方案不起作用。以上是关于使可扩展列表的背景变得透明似乎是不可能的。在 *** 上测试了所有解决方案的主要内容,如果未能解决你的问题,请参考以下文章
当应用程序加载我的透明启动图像时,是不是有可能将主屏幕显示为背景?
如何在我的 iOS 应用程序中获得透明背景,以便我可以看到主屏幕壁纸?