Это стандартное поведение SwiftUI в iOS 15, поскольку оно по умолчанию реализует рекомендации руководства Apple по человеческому интерфейсу, в котором говорится, что на вкладках должны использоваться заполненные варианты символов SF, в то время как на боковых панелях iPad должен использоваться вариант контура.
Эффект достигается за счет автоматического применения iOS .symbolVariant
значение среды, как указано в документации по вариантам символов:
SwiftUI устанавливает для вас вариант в некоторых средах. Например, SwiftUI автоматически применяет fill
вариант символа для элементов, которые отображаются в закрытии содержимого swipeActions(edge:allowsFullSwipe:content:)
метод или как элементы панели вкладок в представлении вкладок.
Если вы абсолютно хотите избавиться от режима заполнения, это намеренно сделано сложно, но не невозможно. Вы должны переопределить поставляемый \.symbolVariant
переменная среды непосредственно на Label
элемент, внутри вашего tabItem
декларация:
Text("Map!")
.tabItem {
Label("Map", systemImage: "map")
.environment(\.symbolVariant, .none)
}
С помощью .symbolVariant(.none)
модификатор или попытка установить значение среды выше на графике представления не сработают.
Теперь, когда вы видите, как переопределить эффект, я бы все равно посоветовал использовать заполненные формы на панели вкладок. Учитывая, что панель вкладок во многих случаях больше не отличается цветом фона от остальной части страницы, дополнительный визуальный вес, придаваемый элементам вкладок с помощью заполненного варианта, придает этим элементам нужный визуальный вес.