Почему заполнен системный образ SwiftUI TabItem?

0

Вопрос

Я выбираю системное изображение "карта" и "человек" для вкладки, но изображения находятся в заполненном формате, который должен быть в пустом формате. В чем причина?

struct TestView: View {
var body: some View {
    TabView {
        Text("Map!")
            .tabItem {
                Label("Map", systemImage: "map")
            }
        
        Text("Profile")
            .tabItem {
                Label("Person", systemImage: "person")
            }
    }
}

}

Xcode: 13.1

Условные обозначения SF: 3.1

enter image description here

swiftui
2021-11-21 19:08:21
1

Лучший ответ

3

Это стандартное поведение 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) модификатор или попытка установить значение среды выше на графике представления не сработают.

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

2021-11-21 20:19:55

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................