---
title: Shape
framework: swiftui
role: symbol
role_heading: Protocol
path: swiftui/shape
---

# Shape

A 2D shape that you can use when drawing a view.

## Declaration

```swift
nonisolated protocol Shape : Sendable, Animatable, View
```

## Overview

Overview Shapes without an explicit fill or stroke get a default fill based on the foreground color. You can define shapes in relation to an implicit frame of reference, such as the natural size of the view that contains it. Alternatively, you can define shapes in terms of absolute coordinates.

## Topics

### Getting standard shapes

- [buttonBorder](swiftui/shape/buttonborder.md)
- [capsule](swiftui/shape/capsule.md)
- [capsule(style:)](swiftui/shape/capsule(style:).md)
- [circle](swiftui/shape/circle.md)
- [containerRelative](swiftui/shape/containerrelative.md)
- [ellipse](swiftui/shape/ellipse.md)
- [rect](swiftui/shape/rect.md)
- [rect(cornerRadii:style:)](swiftui/shape/rect(cornerradii:style:).md)
- [rect(cornerRadius:style:)](swiftui/shape/rect(cornerradius:style:).md)
- [rect(cornerSize:style:)](swiftui/shape/rect(cornersize:style:).md)
- [rect(topLeadingRadius:bottomLeadingRadius:bottomTrailingRadius:topTrailingRadius:style:)](swiftui/shape/rect(topleadingradius:bottomleadingradius:bottomtrailingradius:toptrailingradius:style:).md)

### Defining a shape’s size and path

- [sizeThatFits(_:)](swiftui/shape/sizethatfits(_:).md)
- [path(in:)](swiftui/shape/path(in:).md)

### Transforming a shape

- [trim(from:to:)](swiftui/shape/trim(from:to:).md)
- [transform(_:)](swiftui/shape/transform(_:).md)
- [size(_:)](swiftui/shape/size(_:).md)
- [size(width:height:)](swiftui/shape/size(width:height:).md)
- [scale(_:anchor:)](swiftui/shape/scale(_:anchor:).md)
- [scale(x:y:anchor:)](swiftui/shape/scale(x:y:anchor:).md)
- [rotation(_:anchor:)](swiftui/shape/rotation(_:anchor:).md)
- [offset(_:)](swiftui/shape/offset(_:).md)
- [offset(x:y:)](swiftui/shape/offset(x:y:).md)

### Setting the stroke characteristics

- [stroke(_:lineWidth:)](swiftui/shape/stroke(_:linewidth:).md)
- [stroke(_:lineWidth:antialiased:)](swiftui/shape/stroke(_:linewidth:antialiased:).md)
- [stroke(lineWidth:)](swiftui/shape/stroke(linewidth:).md)
- [stroke(_:style:)](swiftui/shape/stroke(_:style:).md)
- [stroke(_:style:antialiased:)](swiftui/shape/stroke(_:style:antialiased:).md)
- [stroke(style:)](swiftui/shape/stroke(style:).md)

### Filling a shape

- [fill(_:style:)](swiftui/shape/fill(_:style:).md)
- [fill(style:)](swiftui/shape/fill(style:).md)

### Setting the role

- [role](swiftui/shape/role.md)

### Indicating a layout direction

- [layoutDirectionBehavior](swiftui/shape/layoutdirectionbehavior.md)

### Performing operations on a shape

- [intersection(_:eoFill:)](swiftui/shape/intersection(_:eofill:).md)
- [lineIntersection(_:eoFill:)](swiftui/shape/lineintersection(_:eofill:).md)
- [lineSubtraction(_:eoFill:)](swiftui/shape/linesubtraction(_:eofill:).md)
- [subtracting(_:eoFill:)](swiftui/shape/subtracting(_:eofill:).md)
- [symmetricDifference(_:eoFill:)](swiftui/shape/symmetricdifference(_:eofill:).md)
- [union(_:eoFill:)](swiftui/shape/union(_:eofill:).md)

### Instance Methods

- [size(_:anchor:)](swiftui/shape/size(_:anchor:).md)
- [size(width:height:anchor:)](swiftui/shape/size(width:height:anchor:).md)

### Type Methods

- [rect(corners:isUniform:)](swiftui/shape/rect(corners:isuniform:).md)
- [rect(topLeadingCorner:topTrailingCorner:bottomLeadingCorner:bottomTrailingCorner:)](swiftui/shape/rect(topleadingcorner:toptrailingcorner:bottomleadingcorner:bottomtrailingcorner:).md)
- [rect(uniformBottomCorners:topLeadingCorner:topTrailingCorner:)](swiftui/shape/rect(uniformbottomcorners:topleadingcorner:toptrailingcorner:).md)
- [rect(uniformLeadingCorners:topTrailingCorner:bottomTrailingCorner:)](swiftui/shape/rect(uniformleadingcorners:toptrailingcorner:bottomtrailingcorner:).md)
- [rect(uniformLeadingCorners:uniformTrailingCorners:)](swiftui/shape/rect(uniformleadingcorners:uniformtrailingcorners:).md)
- [rect(uniformTopCorners:bottomLeadingCorner:bottomTrailingCorner:)](swiftui/shape/rect(uniformtopcorners:bottomleadingcorner:bottomtrailingcorner:).md)
- [rect(uniformTopCorners:uniformBottomCorners:)](swiftui/shape/rect(uniformtopcorners:uniformbottomcorners:).md)
- [rect(uniformTrailingCorners:topLeadingCorner:bottomLeadingCorner:)](swiftui/shape/rect(uniformtrailingcorners:topleadingcorner:bottomleadingcorner:).md)

## Relationships

### Inherits From

- [Animatable](swiftui/animatable.md)
- [Sendable](swift/sendable.md)
- [SendableMetatype](swift/sendablemetatype.md)
- [View](swiftui/view.md)

### Inherited By

- [InsettableShape](swiftui/insettableshape.md)
- [RoundedRectangularShape](swiftui/roundedrectangularshape.md)

### Conforming Types

- [AnyShape](swiftui/anyshape.md)
- [ButtonBorderShape](swiftui/buttonbordershape.md)
- [Capsule](swiftui/capsule.md)
- [Circle](swiftui/circle.md)
- [ConcentricRectangle](swiftui/concentricrectangle.md)
- [ContainerRelativeShape](swiftui/containerrelativeshape.md)
- [DefaultGlassEffectShape](swiftui/defaultglasseffectshape.md)
- [Ellipse](swiftui/ellipse.md)
- [OffsetShape](swiftui/offsetshape.md)
- [Path](swiftui/path.md)
- [Rectangle](swiftui/rectangle.md)
- [RotatedShape](swiftui/rotatedshape.md)
- [RoundedRectangle](swiftui/roundedrectangle.md)
- [ScaledShape](swiftui/scaledshape.md)
- [TransformedShape](swiftui/transformedshape.md)
- [UnevenRoundedRectangle](swiftui/unevenroundedrectangle.md)

## See Also

### Defining shape behavior

- [ShapeView](swiftui/shapeview.md)
- [AnyShape](swiftui/anyshape.md)
- [ShapeRole](swiftui/shaperole.md)
- [StrokeStyle](swiftui/strokestyle.md)
- [StrokeShapeView](swiftui/strokeshapeview.md)
- [StrokeBorderShapeView](swiftui/strokebordershapeview.md)
- [FillStyle](swiftui/fillstyle.md)
- [FillShapeView](swiftui/fillshapeview.md)
