Il est possible de créer un modificateur personnalisé pour View appelé ViewModifier
dans SwiftUI.
En utilisant ViewModifier
, vous pouvez personnaliser la vue de SwiftUI en général.
Cette fois, je vais résumer un tel `View Modifier.
C'est un protocole
pour implémenter la fonction de personnalisation et de retour de la vue en l'appliquant à la vue.
Les fonctions définies dans le "protocole ViewModifier" sont les suivantes.
func body(content: Self.Content) -> Self.Body
La vue est mise à jour ou convertie dans cette fonction et renvoyée.
content
est le proxy de la vue à qualifier.
Self.Body
est défini par ʻassociated type`, et le type de View à renvoyer au processus de conversion de View est décrit ici.
Créons un modificateur personnalisé pour convertir une vue simple en une vue de type carte.
C'est simple à faire, créer une structure de modificateur personnalisée, appliquer une valeur à content
, qui est l'argument de body (content :)
, et le renvoyer.
Ensuite, appliquez le modificateur créé avec à la vue que vous souhaitez appliquer.
struct CardModifier: ViewModifier {
func body(content: Content) -> some View {
content
.padding(16)
.background(Color.white)
.cornerRadius(10)
.shadow(radius: 5)
}
}
struct ContentView: View {
var body: some View {
VStack {
// .modifier(_:)、 ModifiedContent(content:modifier:)L'un ou l'autre est applicable.
Text("Hello, world!")
.modifier(CardModifier())
ModifiedContent(content: Text("Hello, world!"),
modifier: CardModifier())
}
}
}
En raison de ce qui précède, les modifications décrites dans le modificateur personnalisé seront appliquées à la vue correspondante comme suit.
En utilisant ViewModifier
, vous pouvez définir la disposition à appliquer à plusieurs vues en général.
Puisque SwiftUI décrit la disposition dans une chaîne de méthodes, lors de la définition de la même disposition, si tous les mêmes processus sont alignés en écriture solide, la lisibilité se détériorera.
Afin de garder le code propre, je pense qu'il est préférable de rassembler les vues avec la même disposition avec un modificateur personnalisé.
Recommended Posts