Skip to main content

How to create a marching ants border effect

About 2 minSwiftSwiftUIArticle(s)bloghackingwithswift.comcrashcourseswiftswiftuixcodeappstore

How to create a marching ants border effect 관련

SwiftUI by Example

Back to Home

How to create a marching ants border effect | SwiftUI by Example

How to create a marching ants border effect

Updated for Xcode 15

SwiftUI’s stroke can be configured with dash and dash phase options that gives us very fine-grained control over how the line is drawn. For example, we could draw a box with a dashed stroke like this:

struct ContentView: View {
    var body: some View {
        Rectangle()
            .strokeBorder(style: StrokeStyle(lineWidth: 4, dash: [10]))
    }
}

Download this as an Xcode projectopen in new window

A dotted line outlining a rectangular area.
A dotted line outlining a rectangular area.

Using [10] for the dash parameter means SwiftUI will draw 10 points of our stroke then 10 points of space, repeating that pattern until the entire rectangle has been stroked. It’s an array because you can provide more than one value, such as [10, 5], to mean “10 points of stroke then a 5-point gap.”

Where this becomes really interesting is when you add in the dash phase, which dictates where the dashes and gaps should be positioned. If we store that phase in a state property, we can then animate that value over time to create a so-called marching ants effect – a dashed stroke that moves around a shape, which is commonly used to signal object selection.

In code it looks like this:

struct ContentView: View {
    @State private var phase = 0.0

    var body: some View {
        Rectangle()
            .strokeBorder(style: StrokeStyle(lineWidth: 4, dash: [10], dashPhase: phase))
            .frame(width: 200, height: 200)
            .onAppear {
                withAnimation(.linear.repeatForever(autoreverses: false)) {
                    phase -= 20
                }
            }
    }
}

Download this as an Xcode projectopen in new window

Similar solutions…
How to draw a border around a view | SwiftUI by Example

How to draw a border around a view
How to draw a border inside a view | SwiftUI by Example

How to draw a border inside a view
How to add a border to a TextField | SwiftUI by Example

How to add a border to a TextField
How to add visual effect blurs | SwiftUI by Example

How to add visual effect blurs
How to draw a shadow around a view | SwiftUI by Example

How to draw a shadow around a view

이찬희 (MarkiiimarK)
Never Stop Learning.