简体   繁体   中英

Why background color of List is different while presenting view in SwiftUI?

I am implementing List in Presented view (AddItemView). I want background color same as List in any view.

struct HomeView: View {
    @State private var showAddItemView: Bool = false
    var body: some View {
        NavigationView {
            List(0..<9, id: \.self) { i in
                Text("Row \(i)")
            }
            .navigationTitle("Home")
            .navigationBarItems(trailing:
                Button("Add") {
                    showAddItemView.toggle()
                })
            .sheet(isPresented: $showAddItemView) {
                AddItemView()
            }    
        }
    }
}

struct AddItemView: View {
    init(){
        UITableView.appearance().backgroundColor = .clear
    }
    var body: some View {
        NavigationView {
            List(0..<9, id: \.self) { i in
                Text("Row \(i)")
            }.background(Color(UIColor.systemGroupedBackground))
            .listStyle(InsetGroupedListStyle())
            .navigationBarTitle("Add Item View", displayMode: .inline)    
        }
    }
}

Above code is creating simple List with InsetGroupedListStyle. But background colour is different while Presenting view (AddItemView in my case).

I have already tried https://stackoverflow.com/a/58427518/7084910

How to set background color of List in presented view as in any normal list. Red/Yellow/Green can set to List, "BUT" I want same as normal list in HomeView that will work in light & dark mode.

在此处输入图像描述 在此处输入图像描述

Use this:

var body: some View {
    NavigationView {
        List(0..<9, id: \.self) { i in
            Text("Row \(i)")
        }
        .colorMultiply(Color.red)

    }
}

They think it is better visual representation for .sheet (probably to make it more determinable)...

SwiftUI 2.0

The .fullScreenCover gives what you want. Alternate is to present AddItemView manually using some transition.

演示

.navigationBarItems(trailing:
    Button("Add") {
        showAddItemView.toggle()
    })
.fullScreenCover(isPresented: $showAddItemView) {
    AddItemView()
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM