A view modifier is a modifier that you apply to a view such as Text or Label or another modifier such as chained font() or foreground() producing a different version of the original modifier.
Protocol
protocol ViewModifier
Basic Usage
Text("Hello World!") .bold() .font(.title) .foregoround(.yellow)
Creating a Custom View Modifiers
1 Create a struct that conforms to the ViewModifier Protocol
struct PrimaryTitleTextModifier: ViewModifier {}
2 Compose properties and return them as a view
struct PrimaryTitleStyle: ViewModifier { func body(content: Content) -> some View { content .font(.title) .padding() .overlay { RoundedRectangle(cornerRadius: 15) .stroke(lineWidth: 6) } .foregroundColor(.black) } } struct SecondaryTitleStyle: ViewModifier { func body(content: Content) -> some View { content .font(.title3) .padding() .overlay { RoundedRectangle(cornerRadius: 15) .stroke(lineWidth: 6) } .foregroundColor(.gray) } }
3 Define an extension to View that itself integrates the new modifier
extension View { func applyPrimaryTitleStyle() -> some View { modifier(PrimaryTitleStyle) } }
4 Apply the property to any view like so...
Text("Tsavo National Park") .applyPrimaryTitleStyle()
Top comments (0)