Updated for Xcode 13.0
SwiftUI gives us both
strokeBorder() modifiers for drawing borders around shapes, and they have subtly different behavior:
strokeBorder()modifier insets the view by half your border width then applies the stroke, meaning that the entire border is drawn inside the view.
stroke()modifier draws a border centered on the view’s edge, meaning that half the border is inside the view and half outside.
Important: Both of these modifiers only apply to shapes – you can use
Capsule, and so on, but not with
Image or other non-shape views. If you want to draw a border around non-shape views, you should use the
border() modifier instead – see “How to draw a border around a view”.
If you want to see
strokeBorder() in action, try this:
Circle() .strokeBorder(Color.blue, lineWidth: 50) .frame(width: 200, height: 200) .padding()
Because that uses
strokeBorder(), the 50-point blue stroke will be drawn entirely inside the circle.
If you aren’t quite sure of the difference from
stroke(), try changing your code to this:
Circle() .stroke(Color.blue, lineWidth: 50) .frame(width: 200, height: 200) .padding()
Now you’ll see the circle looks bigger because the stroke is drawn half inside and half outside the circle.
SPONSORED Join a FREE crash course for iOS devs who want to become complete senior developers — from October 18th to 24th. Learn how to apply iOS app architecture patterns through a series of lectures and practical coding sessions.
Link copied to your pasteboard.