Как выбрать цвет выбора системы в macOS?

Пытаюсь подобрать цвет выделения из системы. Я вижу это во всей системе, где выбор строки списка или значки, отображающие цвет системы

.accentColor(Color.primary)
.background(Color.secondary)
etc

API цветов имеет только .gray, .blue, .green и т. д., а также .вторичный и .primary. Жестко закодированные имена возвращают соответствующие цвета, а вторичные и основные швы возвращают синий цвет.

Редактировать 1

Это то, на чем я остановился... Это близкое совпадение, но не идеальное.

List{}.listRowBackground(selected?.wrappedValue == listItem ? .accentColor.opacity( 0.85) : Color.clear)

Пожалуйста, не обновляйте свой вопрос своим решением. Вместо этого опубликуйте реальный ответ ниже.

HangarRash 19.04.2024 07:19

@HangarRash Я не хотел претендовать на ответ, который дал Sweeper, но Sweeper не печатал конкретную строку кода, поэтому я включил ее, чтобы следующий человек мог просто получить строку кода.

Keith 19.04.2024 19:56

Это нормально, но вам все равно следует опубликовать это как ответ, а не включать в вопрос. Если хотите, отдайте должное Sweeper в этом ответе.

HangarRash 19.04.2024 20:23
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
3
84
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Color.accentColor — это «Цвет акцента», выбранный пользователем на этой странице системных настроек (изображение из службы поддержки Apple):

Акцентный цвет — это широкий цвет темы, применяемый к представлениям и элементам управления. Вы можете установить его на уровне приложения, указав цвет акцента в каталоге ресурсов вашего приложения.

В macOS SwiftUI применяет настройку акцентного цвета только в том случае, если пользователь выбирает «Многоцветный» в разделе «Основные» > «Акцентный цвет» в Системных настройках.

Если выбран «Многоцветный», Color.accentColor будет цветом с именем «AccentColor» в Каталоге активов.

Модификатор представления AccentColor(_:) может изменить цвет, возвращаемый Color.accentColor. Тем не менее, вам вообще не следует использовать accentColor(_:), поскольку он устарел с версии macOS 14.4. В большинстве случаев его использования можно заменить на .tint(_:), что не меняет значения Color.accentColor.

Я попробовал это, так что, возможно, я не применил его в нужном месте. Я поиграюсь с размещением в моем элементе управления списком. Не уверен, что в этом случае будет делать .tint, стоит ли мне попробовать .background(.accentColor) или цвет фона строки списка?

Keith 19.04.2024 06:52

kk заставил его работать .listRowBackground(selected?.wrappedValue == listItem ? .accentColor : Color.clear). оттенок не работал, фон не разрешался, но фон строки списка был разрешен. ТИ!!!

Keith 19.04.2024 07:01

@Keith Да, вам следует использовать listRowBackground в строках списка. Часть о tint здесь не имеет особого значения, поскольку вы устанавливаете фон строки списка (что неясно из вашего вопроса). Я комментировал использование .accentColor(Color.primary) в показанном вами коде.

Sweeper 19.04.2024 07:04

ок, я создал системный список {}, и цвета не совсем правильные. Цвета системы темнее, а у меня ярче. Как-то резко, я поиграю с непрозрачностью.

Keith 19.04.2024 07:08

Это то, на чем я остановился не идеально, но ближе. .listRowBackground(selected?.wrappedValue == listItem ? .accentColor.opacity(0.85) : Color.clear). Я поработаю над этим позже, я уверен, что есть какая-то волшебная непрозрачность. :)

Keith 19.04.2024 07:16

Другие вопросы по теме