У меня есть TabView с метками, я не уверен, почему это вообще не задокументировано, и по другому вопросу в stackoverflow я обнаружил, что следующие строки кода работают только на iOS 15.0:
if (selectedTab == 2) {
Label("Playlist", systemImage: "star.fill")
} else {
Label("Playlist", systemImage: "star")
.environment(\.symbolVariants, .none)
}
Это работает по желанию, когда мой проект имеет минимальную версию 15.0, однако все, что ниже, помечает следующую ошибку:
Key path value type 'WritableKeyPath<EnvironmentValues, SymbolVariants>' cannot be converted to contextual type 'KeyPath<EnvironmentValues, SymbolVariants>
Как сделать так, чтобы в более ранних версиях отображались незаполненные значки (контур/по умолчанию/нет) в TabView?
Насколько я понимаю, это ожидаемое поведение, и оно задокументировано.
Ознакомьтесь с документацией здесь. Согласно этому SymbolVariants
доступно только в iOS 15 +
версиях. Таким образом, ваш код будет работать только с проектом 15.0 в качестве минимальной версии, и он выдаст указанную выше ошибку, когда используется более низкая версия.
Что вы можете сделать, так это проверить версии и добавить отдельные коды, как показано ниже.
if #available(iOS 15.0, *) {
if selectedTab == 2 {
Label("Favorites", systemImage: "star.fill")
} else {
Label("Favorites", systemImage: "star")
.environment(\.symbolVariants, .none)
}
} else {
if selectedTab == 2 {
Label("Favorites", systemImage: "star.fill")
} else {
Label("Favorites", systemImage: "star")
}
}
да, в документации есть пример с изображением сердца. Проверь это
Таким образом, использование
Label("Favorites", systemImage: "star")
в iOS до 15.0 просто покажет символ звезды без варианта заполнения, если я явно не упомяну его как «star.fill»? Я не думаю, что могу проверить это в настоящее время, но я хотел бы подтвердить