Prečo SwiftUI tabItem systemImage je naplnená?

0

Otázka

Som vyberte systemImage "mapa" a "osoba" pre tabItem, ale obrázky sú v vyplnené formát, ktorý musí byť v dutých formát. Čo je príčinou?

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

Najlepšiu odpoveď

3

Je to štandardné SwiftUI správanie sa v iOS 15, ako sa to realizuje v predvolenom odporúčania od Apple Human Interface Guidelines, ktorý hovorí, tab bary mali používať naplnené varianty SF Symboly, zatiaľ čo bočné panely na iPad by sa mal používať možných variant.

Účinok sa dosahuje tým, iOS automaticky použitie .symbolVariant prostredie hodnotu, ako je uvedené v symbol varianty dokumentácia:

SwiftUI nastaví variantu pre vás v niektorých prostrediach. Napríklad, SwiftUI automaticky uplatní fill symbol variant pre položky, ktoré sa zobrazujú v obsahu uzavretie swipeActions(edge:allowsFullSwipe:content:) metóda, alebo ako lište položky TabView.

Ak si naozaj chcete dostať jazda na vyplnenie režime, je to zámerne vyrobené zložité, ale nie nemožné. Musíte prepísať dodávanú \.symbolVariant premenné priamo na Label element vo vnútri tabItem vyhlásenie:

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

Pomocou .symbolVariant(.none) modifikátor, alebo sa snaží nastaviť prostredie hodnoty vyššie, a zobraziť graf, nebude to fungovať.

Teraz, keď ste videli, ako potlačiť efekt, by som ešte poradiť, ak chcete použiť vyplnené formuláre v lište. Vzhľadom na to, že lište už má farbu pozadia rozdiel na zvyšok stránky v mnohých prípadoch, extra vizuálnu hmotnosti vzhľadom na karte položky pomocou injekčnej variant dodáva správne množstvo vizuálne hmotnosti tých prvkov.

2021-11-21 20:19:55

V iných jazykoch

Táto stránka je v iných jazykoch

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