Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Por que deve-se considerar a altura do Capsule para limitar o final do arrasto do botão?

Na aula "Finalizando verificações do botão", foi ensinado a delimitar o gesto de arrasto do botão. Para limitar o gesto de arrasto no final, para que o botão não ultrapasse a largura do Capsule, foi utilizado a seguinte verificação:

if gesture.translation.width > 0 && buttonOffSet <= (geometry.size.width - 60) - buttonHeight {
                                        withAnimation(.easeOut(duration: 0.25)) {
                                            buttonOffSet = gesture.translation.width
                                        }

Entendo que o buttonHeight é um valor para a altura do ZStack onde está o Capsule. Então, se este valor é da altura (eixo y), porquê é utilizado para uma verificação onde somente o botão move-se no eixo x ?

2 respostas
solução!

Oii, Elvio!

No código que você mencionou, o buttonHeight está sendo usado para garantir que o botão não ultrapasse os limites visuais do Capsule. Embora o botão se mova no eixo x (horizontalmente), a altura do botão (buttonHeight) é relevante porque o botão tem uma dimensão que precisa ser considerada para que ele não "escape" visualmente do Capsule.

Imagine que o Capsule é como uma pista de corrida e o botão é o carro. Se o carro for muito largo, você precisa garantir que ele não ultrapasse a linha de chegada com a parte de trás ainda na pista. Da mesma forma, ao limitar o movimento do botão, você precisa levar em conta o tamanho do botão para que ele não ultrapasse o limite final do Capsule.

Então, subtrair buttonHeight da largura total do Capsule ajuda a garantir que o botão permaneça completamente visível dentro dos limites do Capsule, mesmo quando está no final do seu movimento de arrasto.

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

Olá, Lorena.

Agradeço sua resposta, inclusive com analogia comparando o Capsule com uma pista de corrida.