Как я могу изменить цвет изображения (значка) на вкладке «Элементы» в SwiftUI?
Я столько всего перепробовала, но ничего не работает …
Спасибо
Вот мой тестовый код:
import SwiftUI
struct TestTabviewIconColor: View {
var body: some View {
TabView {
Text("The First Tab")
.tabItem {
Image(systemName: "1.square.fill")
.foregroundColor(.red)
.accentColor(.red)
.colorMultiply(.red)
Text("First")
}
Text("Another Tab")
.tabItem {
Image(systemName: "2.square.fill")
Text("Second")
}
Text("The Last Tab")
.tabItem {
Image(systemName: "3.square.fill")
Text("Third")
}
}
.font(.headline)
}
}
struct TestTabviewIconColor_Previews: PreviewProvider {
static var previews: some View {
TestTabviewIconColor()
}
}
Чтобы изменить цвет оттенка
tabbar
, вам просто нужно установить модификатор.accentColor()
для TabView, который будет применяться к элементам.Я прочитал этот вопрос как желающий разного цвета для разных вкладок. Это достижимо с помощью механизма PreferenceKey. В приведенном ниже коде значок панели вкладок и текст становятся красными для первой вкладки, зеленым — для второй и синим — для третьей. (Я пробовал использовать
.onAppear
для изменения@State var tabColor
, но это сработало в предварительном просмотре, но не на устройстве. Механизм PreferenceKey отлично работает на устройстве, а также в предварительном просмотре.)(Если вы хотите, чтобы все значки были того же цвета, что и @ Mac3n, и вы увидите тот же вопрос, на который ранее был дан ответ: Изменить цвет выбора вкладки в TabBar SwiftUI).
Но, ребята, я хочу изменить цвета всех изображений / значков, когда они не выбраны. Ваши решения работают только тогда, когда они выбраны !!! — person Flincorp; 24.03.2020
OK. Это было неясно для меня из исходного вопроса. (Возможно, для ясности стоит отредактировать заголовок / вопрос.) Я считаю, что вам придется использовать собственный элемент управления, чтобы получить желаемый эффект. Приведен пример кода, который делает это (с некоторыми шероховатостями). — person Flincorp; 24.03.2020
Если вы хотите иметь разные цвета кнопок TabBar при выборе вкладки, я достаточно уверен, что предоставленный Apple элемент управления не сделает этого за вас.
Вам нужно будет свернуть свой собственный контроль. Это довольно просто. Для примера с ТРЕМЯ вкладками см. Код ниже. Если вы работаете с фиксированным количеством вкладок, этот подход может сработать для вас. И эти принципы могут быть применены для создания элемента управления для большего количества вкладок с переменным количеством вкладок с помощью @ViewBuilder и т. Д.
Я приблизился к стилю стандартной панели TAB. Вам нужно будет немного доработать, чтобы он выглядел точно так же, если это важно для вашего варианта использования.
Привет, косвенно, Ваше решение работает с системными изображениями … Мои изображения — это не системные изображения, а значки, которые я помещаю в Assets.xcassets. Почему с ними не работает? Спасибо Flincorp — person Flincorp; 26.03.2020
Я предполагаю, что ваши изображения отформатированы неправильно. Они должны быть монохроматическими изображениями с прозрачностью, сглаживанием и без тени, использующей маску для определения своей формы. (developer.apple.com/ design / human-interface -guidelines / ios /). Вы также можете создавать свои значки как изображения пользовательских символов (developer.apple.com/documentation/uikit/uiimage/) — тогда они будут вести себя как системные изображения SF Font. — person Flincorp; 27.03.2020
Они отлично работали на обычном Swift … Я буду использовать SF Symblos для SwiftUI и IOS 13 и более поздних версий ….: — \. Большое спасибо за Вашу помощь. — person Flincorp; 27.03.2020