Shape
SwiftUI nos oferece algumas opções de Shapes para trabalhar inicialmente, que também costumam ser as formas mais utilizadas: Rectangle
, Circle
, Ellipse
, Capsule
, RoundedRectangle
.
Diferente de Stacks, Shapes (ou Formas), são views que vão se expandir para ocupar o máximo de espaço disponível. Por isso, é comum o método .frame
ser utilizado em conjunto com um Shape para que ele seja limitado a uma altura e largura determinada.
Rectangle
Desenha um retângulo com as dimensões especificadas, no centro da view que o contém. Outras views como Stacks e Colors começam como retângulos, mas não se engane, elas não são Shapes.
Circle
Desenha um círculo no centro da view que o contém, porém seu diâmetro corresponderá ao menor valor especificado entre altura e largura, por exemplo, se dado um espaço de 100x50, o círculo final terá apenas 50 de altura e 50 de largura.
Ellipse
Possui um comportamento similar ao Circle
, porém não se limita a ter a altura e largura iguais.
Capsule
Cria um Shape em formato de cápsula que vai ter as pontas arredondadas, dependendo de qual eixo (altura ou largura) é maior.
RoundedRectangle
Cria um retângulo que possui os cantos arredondados. Possui dois parâmetros:
cornerRadius
: Define o nível de arredondamento das bordas.
style
: Define o estilo de arredondamento. Se vai ser o estilo clássico .circular
ou o estilo definido pela Apple .continuous
.
Customizando um Shape
Existem vários métodos que podem ser utilizados para customizar um Shape além do .frame
, então seguem alguns dos mais usados e quais as suas finalidades:
.stroke(lineWidth:)
Retorna um novo Shape que é uma cópia do anterior porém com uma borda de tamanho definido por
lineWidth
. As vezes pode extrapolar o limite da view por ser uma borda externa.
.strokeBorder(_, lineWidth:)
Outra forma de adicionar borda a um Shape, porém com borda interna.
.fill()
Permite preencher um Shape com uma cor ou gradiente.
Para demonstrar melhor como os Shapes funcionam, segue um exemplo: