Я пытался найти решение для динамического определения цвета фона / цвета под представлением, которое вы хотите изменить, поскольку мне может потребоваться иметь читаемый текст поверх изображения, не прибегая к использованию среднего цвета изображения для определения правильный цвет для текста, потому что некоторые изображения могут иметь больше светлых цветов в определенных местах изображения, наоборот, с темными цветами, поэтому есть ли способ получить цвет в определенной координате, а затем использовать это, чтобы определить, каким должен быть цвет текста , попробовал использовать Grok и т. д., чтобы сгенерировать базис, который помог мне до сих пор, но в GeomertyReader нет функции цвета, поскольку он хочет, чтобы я использовал этот ответ от Грока.
Код: Выделить всё
struct BackgroundColorKey: PreferenceKey {
static var defaultValue: Color? = nil
static func reduce(value: inout Color?, nextValue: () -> Color?) {
value = nextValue()
}
}
struct BackgroundColorReader: View {
var body: some View {
GeometryReader { geometry in
Color.clear
.preference(key: BackgroundColorKey.self, value: geometry.color(at: geometry.frame(in: .local).center))
}
}
}
struct DynamicTextColor: View {
@State private var backgroundColor: Color? = nil
var body: some View {
VStack {
Text("Your Text Here")
.foregroundColor(backgroundColor?.luminance < 0.5 ? .white : .black) // Invert based on luminance
.background(
BackgroundColorReader()
.onPreferenceChange(BackgroundColorKey.self) { newColor in
self.backgroundColor = newColor
}
)
}
}
}
Это код, который он сгенерировал, а также бесконечно искал в Интернете, если у кого-то еще не было решения, так есть ли фреймворк или решение, которое можно было бы использовать как для macOS, так и для iOS.
Это пример, который я пытаюсь решить в SwiftUI, который у меня ниже
Подробнее здесь:
https://stackoverflow.com/questions/792 ... w-so-i-can