1
resposta

[Sugestão] Preencher todo o capsule quando o movimento passar dos 50%

Da forma que foi feita, quando o movimento passar de 50% da largura do capsule, vamos chamar a outra tela, porém ficaria legal que o botão se preenchesse até o final, simulado o movimento que o usuário faria se fosse até o fim.

Pra ajustar isso, eu só alterei o if quando o buttonOffset para dos 50% do tamanho do width - 60, mudando o buttonOffset para ser igual a largura do geometry -60 (largura do botão) - buttonHeight, desta forma, ao largar o botão após o 50%, o capsule de preenchimento vai a 100% e ai sim a janela é chamada.

.onEnded({ _ in
                                if buttonOffset > (geometry.size.width - 60) / 2 {
                                    buttonOffset = geometry.size.width - 60 - buttonHeight
                                    showSecondScreen = true
                                } else {
                                    withAnimation (.easeInOut(duration: 0.25)) {
                                        buttonOffset = 0
                                    }
                                }
                            }))
1 resposta

Oi, Daniel! Como vai?

Obrigada por compartilhar sua sugestão com a comunidade Alura.

Achei interessante sua ideia de preencher todo o capsule ao ultrapassar 50% do caminho. Isso melhora a fluidez visual e deixa a experiência mais natural para quem arrasta o botão.

Ícone de sugestão

Para saber mais:

Confira os links abaixo para aprender mais sobre gestos e animações no SwiftUI:

Alura

Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!