Как изменить цвет фона во всем приложении? - PullRequest
0 голосов
/ 29 сентября 2019

Есть ли способ настроить фон всего приложения (один и тот же фон по умолчанию для каждого вида) в одном месте?Например, в SceneDelegate ?

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

Создайте пользовательский ViewModifier, добавьте свой цвет и добавьте его в свои представления.Например, если вы хотите, чтобы все ваши представления были оранжевыми, сделайте следующее:

struct BackgroundColorStyle: ViewModifier {

    func body(content: Content) -> some View {        
        return content
            .background(Color.orange)
    }
}

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

Text("Hello world!").modifier(BackgroundColorStyle())

Теперь вы можете - и, вероятно, должны - расширить этодля светлого / темного режима.В этом случае вы можете использовать переменную окружения ColorSchmem:

struct BackgroundColorStyle: ViewModifier {
    @Environment (\.colorScheme) var colorScheme:ColorScheme    
    func body(content: Content) -> some View { 
        if colorScheme == .light {
            return content
                .background(Color.darkGrey)
        } else {
            return content
                .background(Color.white)
        }
    }
}

В любом случае, каждый View, использующий этот модификатор, имеет свой цвет фона, определенный в одном месте.Если вы хотите определить границу вместе с цветом фона, то же самое.

0 голосов
/ 30 сентября 2019
import SwiftUI

struct TestView: View {
    var body: some View {
        ZStack {
            Rectangle()
                .foregroundColor(.blue)
                .edgesIgnoringSafeArea(.all)

            Text("Hello World!")
                .foregroundColor(.white)
        }
    }
}

ZStack и Rectangle (), настройка переднего планаЦвет и краяIgnoringSafeArea

demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...