Параметры настроек в моем приложении оформлены в виде значка на цветном фоне solid и текстовой метки рядом с ними, аналогично элементам в iOS приложении настроек Apple:
HStack(alignment: .center, spacing: 0) {
Image(...)
.foregroundColor(.white)
.frame(width: 28, height: 28, alignment: .center)
.background(
RoundedRectangle(cornerRadius: 6, style: .continuous)
.fill(Color.blue)) // Color may be a property instead, simplified here.
.accessibility(hidden: true)
Text(title)
.font(.system(
size: 16,
weight: .medium,
design: .rounded))
.padding(.leading)
}
Тем не менее, я заметил, что цвет фона ( SwiftUI Color ) для моих представлений значков изменяется, когда включена системная опция «Увеличение контрастности», в то время как цвет фона значков настроек Apple - нет. Например, Color.orange
больше похоже на красный цвет, когда включена функция «Увеличить контраст».
Поэтому я бы хотел игнорировать настройку контрастности текущей цветовой схемы (ColorSchemeContrast
значение среды *) 1011 *) если он установлен на .increased
, только для цвета фона моего представления значков.
К сожалению, использование модификатора среды выдает ошибку, поскольку .colorSchemeContrast
не является записываемым свойством: .environment(\.colorSchemeContrast, .standard)
, Это аналогично задокументировано Apple: «Ваше приложение не может переопределить выбор пользователя.».
Я только пытаюсь избежать указания c небольших областей изменения цвета при увеличении контраста Как и сами Apple, поэтому я могу только предположить, что должен быть какой-то способ достичь этого.
Есть ли другой способ обойти эту проблему?