SwiftUI - Как мне изменить цвет фона представления?

Я начинаю попробовать SwiftUI, и я удивлен, что он, кажется, не быть простым, чтобы изменить цвет фона View. Как вы делаете это с помощью SwiftUI?

Ответ 1

Цвет фона экрана

(Начиная с версии Xcode 11.1 (11A1027)

Я не уверен, означал ли оригинальный постер цвет фона всего экрана или отдельных видов. Поэтому я просто добавлю этот ответ, чтобы установить цвет фона всего экрана.

Использование ZStack

var body: some View {
    ZStack
        {
            Color.purple
                .edgesIgnoringSafeArea(.all)

            // Your other content here
            // Other layers will respect the safe area edges
    }
}

Я добавил .edgesIgnoringSafeArea(.all), в противном случае он остановится на полях безопасной области.

Использование модификатора наложения

var body: some View {
    Color.purple
        .edgesIgnoringSafeArea(.vertical) // Ignore just for the color
        .overlay(
            VStack(spacing: 20) {
                Text("Overlay").font(.largeTitle)
                Text("Example").font(.title).foregroundColor(.white)
        })
}

Примечание. Важно, чтобы .edgesIgnoringSafeArea оставался только на цвете, чтобы основное содержание не игнорировало края безопасной области.

Ответ 2

Вы можете сделать что-то вроде:

.background(Color.black)

вокруг вашего взгляда.

например. из шаблона по умолчанию (я включаю его в группу):

    var body: some View {
        Group {
          Text("Hello SwiftUI!")
        }
       .background(Color.black)
    }

Чтобы добавить немного прозрачности, вы также можете добавить метод .opacity:

.background(Color.black.opacity(0.5))

Вы также можете использовать элемент проверки представления с помощью CMD + щелкнуть по представлению и щелкнув Show SwiftUI Inspector> Background> Ваш цвет

Inspect View

Inspect Detail View

Ответ 3

как это

struct ContentView : View {
    @State var fullName: String = "yushuyi"
    var body: some View {        
        VStack
            {
                TextField($fullName).background(SwiftUI.Color.red)
                Spacer()
        }.background(SwiftUI.Color.yellow.edgesIgnoringSafeArea(.all))
    }
}

Ответ 4

Будет ли это решение работать?:

добавить следующую строку в SceneDelegate: window.rootViewController?.view.backgroundColor =.black

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        if let windowScene = scene as? UIWindowScene {

                window.rootViewController?.view.backgroundColor = .black
}

Ответ 5

Если вы все еще не видите изменения фона, включите/выключите темный режим на устройстве или в симуляторе.

Ответ 6

Несколько возможностей: (SwiftUI/Xcode 11)

1 .background(Color.black) //for system colors

2 .background(Color("green")) //for colors you created in Assets.xcassets

  1. В противном случае вы можете сделать Command + Click для элемента и изменить его оттуда.

Надеюсь, это поможет :)

Ответ 7

Для List:

Все SwiftUI List поддерживаются UITableView в iOS. поэтому вам нужно изменить цвет фона tableView. Но поскольку значения Color и UIColor немного отличаются, вы можете избавиться от UIColor.

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

var body: some View {
    List {
        Section(header: Text("First Section")) {
            Text("First Cell")
        }
        Section(header: Text("Second Section")) {
            Text("First Cell")
        }
    }
    .background(Color.yellow)
}

Теперь вы можете использовать любой фон (включая все Color), который хотите