Proč SwiftUI tabItem systemImage je naplněna?

0

Otázka

Jsem vyberte systemImage "mapa" a "osoba" pro tabItem, ale obrázky jsou v plné podobě, která musí být v hollow podobě. Jaký je důvod?

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 Symboly: 3.1

enter image description here

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

Nejlepší odpověď

3

To je standardní SwiftUI chování v iOS 15, jak to provádí ve výchozím nastavení je doporučení od Apple Human Interface Guidelines, které říká, záložka bary by měly používat plné variant SF Symboly, zatímco postranní na iPad by měl použít obrys varianta.

Efektu je dosaženo tím, že iOS automaticky použití .symbolVariant prostředí hodnoty, jak je uvedeno v symbol variant dokumentace:

SwiftUI nastaví varianta pro vás v některých prostředích. Například, SwiftUI automaticky použije fill symbol varianta pro položky, které se zobrazí v obsahu uzavření swipeActions(edge:allowsFullSwipe:content:) metoda, nebo jako na liště položky TabView.

Pokud si naprosto chcete získat jízdu vyplnit režimu, je to záměrně obtížné, ale ne nemožné. Budete muset přepsat dodávané \.symbolVariant proměnné prostředí přímo na Label prvek, uvnitř tabItem prohlášení:

Text("Map!")
  .tabItem {
    Label("Map", systemImage: "map")
      .environment(\.symbolVariant, .none)
  }

Pomocí .symbolVariant(.none) modifikátor, nebo se snaží nastavit prostředí hodnota vyšší zobrazení grafu, nebude fungovat.

Teď, že jste vidět, jak potlačit účinek, já bych přesto doporučujeme použít vyplněné formuláře v liště. Vzhledem k tomu, že liště již má barvu pozadí rozdíl do zbytku stránky, v mnoha případech, navíc vizuální váhu na záložce položky pomocí vyplněné varianta dodává správné množství vizuální hmotnosti těchto prvků.

2021-11-21 20:19:55

V jiných jazycích

Tato stránka je v jiných jazycích

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