Есть как минимум три способа, которыми вы могли бы выполнить то, что вы хотите. Все они берут ваше представление и оборачивают его в ZStack, поверх представления Color. Основное различие заключается в том, как они называются.
1. Использование View
public struct BackgroundColorView<Content: View>: View {
var view: Content
var body: some View {
ZStack {
Color(red: 222/255, green: 196/255, blue: 125/255)
.edgesIgnoringSafeArea(.all)
view
}
}
}
И вы называете это так:
BackgroundColorView(view: Text("Hello World"))
2. Использование ViewModifier
public struct BackgroundColorModifier: ViewModifier {
func body(content: Content) -> some View {
ZStack {
Color(red: 222/255, green: 196/255, blue: 125/255)
.edgesIgnoringSafeArea(.all)
content
}
}
}
И вы называете это так:
Text("Hello World")
.modifier(BackgroundColorModifier())
3. Использование расширения View
extension View {
public func colorBackground() -> some View {
ZStack {
Color(red: 222/255, green: 196/255, blue: 125/255)
.edgesIgnoringSafeArea(.all)
self
}
}
}
И вы называете это так:
Text("Hello World")
.colorBackground()
Что использовать?
Я лично считаю, что # 3 - самый хороший вариант,и его легко расширить, чтобы принять параметр цвета:
extension View {
public func colorBackground(_ color: Color) -> some View {
ZStack {
color
.edgesIgnoringSafeArea(.all)
self
}
}
}
И вы называете это так:
Text("Hello World")
.colorBackground(Color.red)