【问题标题】:how to make a list fully transparent in Swift?如何在 Swift 中使列表完全透明?
【发布时间】:2020-09-05 17:27:02
【问题描述】:

我是 SwiftUI 初学者。我在 SwiftUI 应用程序中根据需要创建列表时遇到问题!

这是我的代码:

struct Search: View {

@ObservedObject var webservice = Webservice()

@State var depart = "Gent-Sint-Pieters"

@State var destination = "Mechelen"

var body: some View {

    VStack (spacing: 20){

        Rechercher(depart: $depart , destination: $destination)       

        HStack {

                List(webservice.rides, id:\.id) { item in

                    Text("")

                }

                //.colorMultiply(Color(hue: 0.547, saturation: 0.071, brightness: 1.0))

            Spacer()
        }

        RechercheButton()
    }
}
}

我想要的是删除列表的白色背景。有可能吗?

你能告诉我我需要在这段代码中添加什么以获得这样的结果(在每条灰色分隔线之间有一个内容,并且列表没有背景颜色)吗?

谢谢!!

【问题讨论】:

    标签: swift xcode swiftui swift5


    【解决方案1】:

    在视图的init方法中设置清除颜色

    init() {
            UITableView.appearance().backgroundColor = .clear 
            UITableViewCell.appearance().backgroundColor = .clear
        }
    

    所以,你的答案将如下所示

    struct Search: View {
    
    @ObservedObject var webservice = Webservice()
    
    @State var depart = "Gent-Sint-Pieters"
    
    @State var destination = "Mechelen"
    
    init() {
                UITableView.appearance().backgroundColor = .clear 
                UITableViewCell.appearance().backgroundColor = .clear
            }
    
    var body: some View {
    
        VStack (spacing: 20){
    
            Rechercher(depart: $depart , destination: $destination)       
    
            HStack {
    
                    List(webservice.rides, id:\.id) { item in
    
                        Text("")
    
                    }
    
                    //.colorMultiply(Color(hue: 0.547, saturation: 0.071, brightness: 1.0))
    
                Spacer()
            }
    
            RechercheButton()
        }
    }
    }
    

    【讨论】:

      【解决方案2】:

      一个非常有用的模式是在视图主体中插入一个匿名块。请务必return 后面的视图,例如

          var body: some View {
              let _ = {
              }()
              return Text("Cool")
          }
      

      所以在你的情况下:

          var body: some View {
              let _ = {
                  UITableViewCell.appearance().backgroundColor = UIColor.clear
                  UITableView.appearance().backgroundColor = UIColor.clear
              }()
              return List { … }
          }
      

      其他有用的东西:

          var body: some View {
              let _ = {
                  // Removes space between nav bar bottom and top of form's table view top
                  UITableView.appearance().tableHeaderView = UIView(frame: CGRect(x: 0, y: 0, width: 0, height: Double.leastNonzeroMagnitude))
                  // Remove lines between rows
                  UITableView.appearance().separatorColor = .clear
                  // Set list row background color to clear
                  UITableViewCell.appearance().backgroundColor = UIColor.clear
                  // Set list background color to clear
                  UITableView.appearance().backgroundColor = UIColor.clear
              }()
              return List { … }
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-23
        相关资源
        最近更新 更多