Pourquoi SwiftUI tabItem systemImage est-il rempli?

0

La question

Je sélectionne le systemImage "carte" et "personne" pour l'tabItem, mais les images sont remplis format qui doit être dans le creux de format. Quelle est la raison?

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

enter image description here

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

La meilleure réponse

3

C'est la norme SwiftUI comportement dans l'iOS 15, car il implémente par défaut, les recommandations d'Apple, Human Interface Guidelines, qui dit onglet barres doivent utiliser rempli variantes de SF des Symboles, alors que encadrés sur iPad devrait utiliser l'ébauche de variante.

L'effet est obtenu par iOS automatiquement l'application de la .symbolVariant la valeur d'environnement, comme le fait le symbole des variantes de la documentation:

SwiftUI définit une variante pour vous dans certains environnements. Par exemple, SwiftUI applique automatiquement le fill symbole de la variante pour les éléments qui apparaissent dans le contenu de la fermeture de la swipeActions(edge:allowsFullSwipe:content:) méthode, ou l'onglet éléments de la barre de TabView.

Si vous voulez absolument obtenir le tour du mode de remplissage, c'est délibérément rendue délicate mais pas impossible. Vous devez remplacer la fourni \.symbolVariant la variable d'environnement directement sur le Label élément, à l'intérieur de votre tabItem déclaration:

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

À l'aide de la .symbolVariant(.none) modificateur, ou d'essayer de définir la valeur d'environnement plus haut dans la vue graphique, ne fonctionne pas.

Maintenant que vous voyez comment remplacer l'effet, je voudrais encore vous conseille d'utiliser le remplis dans la barre d'onglet. Étant donné que la barre d'onglets n'a plus de couleur de fond, la différence pour le reste de la page, dans beaucoup de cas, le supplément de poids visuel donné à onglet éléments par l'utilisation de la remplir variante prête la bonne quantité de poids visuel de ces éléments.

2021-11-21 20:19:55

Dans d'autres langues

Cette page est dans d'autres langues

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