使可扩展列表的背景变得透明似乎是不可能的。在 *** 上测试了所有解决方案

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 应用程序中获得透明背景,以便我可以看到主屏幕壁纸?

OctoberCMS - 如何使可折叠列表默认仅在非移动设备上处于活动状态

设置vim背景透明

如何允许 div 不透明而不是背景图像?

qt对话框失去焦点透明