Es ist möglich, in SwiftUI einen benutzerdefinierten Modifikator für die Ansicht "ViewModifier" zu erstellen. Mit "ViewModifier" können Sie die Ansicht von SwiftUI im Allgemeinen anpassen. Dieses Mal werde ich einen solchen `View Modifier zusammenfassen.
Es ist ein "Protokoll", um die Funktion zum Anpassen und Zurückgeben der Ansicht zu implementieren, indem sie auf die Ansicht angewendet wird. Die im ViewModifier-Protokoll definierten Funktionen sind wie folgt.
func body(content: Self.Content) -> Self.Body
Die Ansicht wird in dieser Funktion aktualisiert oder konvertiert und zurückgegeben.
content
ist der Proxy der Ansicht, um sich zu qualifizieren.
Self.Body
wird durch zugeordneten Typ
definiert, und der Typ der Ansicht, der an den Konvertierungsprozess von View zurückgegeben werden soll, wird hier beschrieben.
Erstellen wir einen benutzerdefinierten Modifikator, um eine einfache Ansicht in eine kartenartige Ansicht zu konvertieren. Es ist einfach, eine benutzerdefinierte Modifikatorstruktur zu erstellen, einen Wert auf "content" anzuwenden, der das Argument von "body (content :)" ist, und ihn zurückzugeben. Wenden Sie danach den mit erstellten Modifikator auf die Ansicht an, die Sie anwenden möchten.
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:)Beides ist anwendbar.
Text("Hello, world!")
.modifier(CardModifier())
ModifiedContent(content: Text("Hello, world!"),
modifier: CardModifier())
}
}
}
Aus diesem Grund werden die im benutzerdefinierten Modifikator beschriebenen Änderungen wie folgt auf die entsprechende Ansicht angewendet.
Mit "ViewModifier" können Sie das Layout definieren, das im Allgemeinen auf mehrere Ansichten angewendet werden soll. Da SwiftUI das Layout in einer Methodenkette beschreibt, verschlechtert sich die Lesbarkeit, wenn beim Definieren desselben Layouts dieselben Prozesse in solider Schrift angeordnet werden. Um den Code sauber zu halten, ist es meiner Meinung nach besser, die Ansichten mit demselben Layout mit einem benutzerdefinierten Modifikator zusammenzustellen.
Recommended Posts