如何在 SwiftUI 中设置 View 的背景

问题描述 投票:0回答:2

我正在制作一个 swiftui 应用程序,我有一个 NavigationView,其中包含一个 VStack 和一个列表。

我尝试将以下代码行放在很多地方

.background(Color.blue)
但它在任何地方都没有效果(什么也没有发生)。

如何为视图本身设置背景?

我知道这是一件很简单的事情,但根本行不通......

这是我的代码:

struct ContentView: View {
   @Environment(\.managedObjectContext) var managedObjectContext
    
   @FetchRequest(entity: Todo.entity(), sortDescriptors: [NSSortDescriptor(keyPath: \Todo.name, ascending: true)]) var todos: FetchedResults<Todo>
    
   @State private var showingAddTodoView: Bool = false
   @State private var animatingButton: Bool = false
    
        var body: some View {
            NavigationView {
                ZStack {
                List {
                    ForEach(self.todos, id: \.self) { todo in
                    HStack {

                      Circle()
                        .frame(width: 12, height: 12, alignment: .center)
                        .foregroundColor(self.colorize(priority: todo.priority ?? "Normal"))
                      Text(todo.name ?? "Unknown")
                        .fontWeight(.semibold)
                      
                      Spacer()
                      
                      Text(todo.priority ?? "Unkown")
                        .font(.footnote)
                        .foregroundColor(Color(UIColor.systemGray2))
                        .padding(3)
                        .frame(minWidth: 62)
                        .overlay(
                            Capsule().stroke(Color(self.colorize(priority: todo.priority ?? "Normal")), lineWidth: 0.75)
                            )
                      Spacer()
                        
                        Image(systemName: todo.completed ? "checkmark.square": "square")
                            .foregroundColor(todo.completed ? .green : .black)
                            .onTapGesture {
                                self.updateTodo(todo)
                        }
                    }
                    .padding(.vertical, 10)
                    }
                    .onDelete(perform: deleteTodo)
                }
                .navigationBarTitle("Todos", displayMode: .inline)
                .navigationBarItems(
                    leading: EditButton(),
                    trailing:
                    Button(action: {
                        self.showingAddTodoView.toggle()
                    }) {
                        Image(systemName: "plus")
                    }
                    .sheet(isPresented: $showingAddTodoView) {
                        AddTodoView().environment(\.managedObjectContext, self.managedObjectContext)
                    }
                )
                if todos.count == 0 {
                    NoTodosView()
                }
            }
            .sheet(isPresented: $showingAddTodoView) {
                AddTodoView().environment(\.managedObjectContext, self.managedObjectContext)
            }
            .overlay(
                ZStack {
                  Group {
                      Circle()
                        .fill(Color.blue)
                        .opacity(self.animatingButton ? 0.2 : 0)
                        .scaleEffect(self.animatingButton ? 1 : 0)
                        .frame(width: 68, height: 68, alignment: .center)
                      Circle()
                        .fill(Color.blue)
                        .opacity(self.animatingButton ? 0.15 : 0)
                        .scaleEffect(self.animatingButton ? 1 : 0)
                        .frame(width: 88, height: 88, alignment: .center)
                    }
                    .animation(Animation.easeInOut(duration: 2).repeatForever(autoreverses: true))
                    Button(action: {
                    self.showingAddTodoView.toggle()
                }) {
                    Image(systemName: "plus.circle.fill")
                    .resizable()
                    .scaledToFit()
                        .background(Circle().fill(Color("Color")))
                        .frame(width: 48, height: 48, alignment: .center)
                    }
                    .onAppear(perform: {
                       self.animatingButton.toggle()
                    })
                }
                .padding(.bottom, 15)
                .padding(.trailing, 15)
                , alignment: .bottomTrailing
            )
       }
}

我想为此视图设置背景颜色:

View

ios swiftui background-color
2个回答
1
投票

试试这个...

struct ContentView: View {
    var body: some View {
        UITableView.appearance().backgroundColor = .clear
        UITableViewCell.appearance().backgroundColor = .clear
        return NavigationView {
             ZStack {
                Color.blue
                    .edgesIgnoringSafeArea(.all)
                 
                List{
                    ForEach((1...5), id: \.self){_ in
                        HStack{
                            Text("item")
                        }
                    }
//                 .listRowBackground(Color.blue)
                }
            }
        }
    }
}

0
投票
struct ContentView: View {
var body: some View {
    ZStack{
        Color.red.ignoresSafeArea()
        Text("Your content")
    }
}

}

© www.soinside.com 2019 - 2024. All rights reserved.