Один из способов назначить «обратный» цвет по своему вкусу, чтобы вы могли воспользоваться преимуществами темного режима без использования системных цветов, заключается в следующем:
public struct Colors {
public var blue: MyColor = Blue()
.....
public init(colorScheme: ColorScheme) {
self.blue = colorScheme == .light ? Blue() : BlueForDarkMode()
.....
}
}
public protocol MyColor {
var light: Color { get }
var medium: Color { get }
var dark: Color { get }
}
// Orange for testing
public struct BlueForDarkMode: MyColor {
public let light: Color = Color(hexString: "F4BBA5")
public let medium: Color = Color(hexString: "E76B39")
public let dark: Color = Color(hexString: "542715")
}
public struct Blue: MyColor {
public let light: Color = Color(hexString: "9AB1D0")
public let medium: Color = Color(hexString: "215499")
public let dark: Color = Color(hexString: "153662")
}
, затем вы называете его так:
struct ContentView: View {
@Environment(\.colorScheme) var colorScheme
@State var myColors = Colors(colorScheme: .light)
var body: some View {
Rectangle()
.frame(width: 300, height: 300)
.foregroundColor(myColors.blue.medium)
.onAppear(perform: {self.myColors = Colors(colorScheme: self.colorScheme)})
}
}
Обратите внимание, вам придется проделать немного больше работы, чтобы "ощутить" изменения режима, но это уже другой вопрос.