DEV Community

Samuel Owino
Samuel Owino

Posted on

SwiftUI ViewModifiers

iOS App preview

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 
Enter fullscreen mode Exit fullscreen mode

Basic Usage

Text("Hello World!") .bold() .font(.title) .foregoround(.yellow) 
Enter fullscreen mode Exit fullscreen mode

Creating a Custom View Modifiers

1 Create a struct that conforms to the ViewModifier Protocol

struct PrimaryTitleTextModifier: ViewModifier {} 
Enter fullscreen mode Exit fullscreen mode

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) } } 
Enter fullscreen mode Exit fullscreen mode

3 Define an extension to View that itself integrates the new modifier

extension View { func applyPrimaryTitleStyle() -> some View { modifier(PrimaryTitleStyle) } } 
Enter fullscreen mode Exit fullscreen mode

4 Apply the property to any view like so...

Text("Tsavo National Park") .applyPrimaryTitleStyle() 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)