Вы можете попробовать следующее:
class UserSettings: ObservableObject {
@Published var mapType: String = "Satellite"
var fgColor: Color {
switch mapType {
case "Satellite", "Hybrid", "AssassinsCreed", "Aubergine", "Dark", "MidnightCommand", "Night":
return Color(UIColor.white)
default:
return Color(UIColor.black)
}
}
}
struct ColorTheme: View {
@ObservedObject var userSettings = UserSettings()
var body: some View {
Text("test")
.foregroundColor(userSettings.fgColor)
}
}
Вы также можете рассмотреть возможность создания mapType
an enum .
РЕДАКТИРОВАТЬ
Возможно, вы ищете расширение просмотра:
extension View {
@ViewBuilder
func customFgColor(mapType: String) -> some View {
switch mapType {
case "Satellite", "Hybrid", "AssassinsCreed", "Aubergine", "Dark", "MidnightCommand", "Night":
return self.foregroundColor(Color(UIColor.white))
default:
return self.foregroundColor(Color(UIColor.black))
}
}
}
struct ColorTheme: View {
@ObservedObject var userSettings = UserSettings()
var body: some View {
Text("test")
.customFgColor(mapType: userSettings.mapType)
}
}