1
resposta

[Dúvida] Icone de voltar dentro do botão não é redimensionado

Na aula "Empilhando elementos" a gente constroi o botao de Voltar dentro da nova controller. Utilizando a versão mais recente do Xcode, quando redimensiono o botão via Size Inspector e Constraints (como feito na aula) para 25x25 pixels, a imagem dentro do botão não altera de tamanho (original: 50x50 pixels). A área de clique do botão, porém, é redimensionada causando um bug visual onde o botão é renderizado com 50x50 pixels mas só é clicável numa área de 25x25 pixels.

1 resposta

Olá, Ricardo!

Entendo sua preocupação e é realmente importante que a interface do usuário seja consistente e funcione como esperado. Parece que você está enfrentando um problema com o redimensionamento do ícone dentro do botão no Xcode.

Acredito que o que está acontecendo é que, ao redimensionar o botão, o Xcode não está automaticamente ajustando o tamanho da imagem dentro do botão. Isso pode ser devido a como o Xcode lida com imagens e botões.

Uma possível solução para isso seria redimensionar manualmente a imagem antes de adicioná-la ao botão. Você pode fazer isso em um programa de edição de imagens ou diretamente no Xcode.

No Xcode, você pode redimensionar a imagem selecionando a imagem no Asset Catalog, indo para o painel do inspetor de atributos (o ícone que parece um escudo) e alterando a escala. Defina a escala para 0,5 (para reduzir o tamanho da imagem pela metade) e veja se isso resolve o problema.

Outra solução seria tentar usar o método setImage(_:for:) do botão para definir a imagem e seu estado. Você pode então usar o método resizableImage(withCapInsets:resizingMode:) da imagem para criar uma nova imagem que pode ser redimensionada com os insets e o modo de redimensionamento especificados.

Aqui está um exemplo de como você pode fazer isso:

let image = UIImage(named: "nome_da_sua_imagem")?.resizableImage(withCapInsets: .zero, resizingMode: .scaleAspectFit)
botaoVoltar.setImage(image, for: .normal)

Espero que essas sugestões possam te ajudar a resolver o problema. Qualquer coisa manda aqui de novo.

Bons estudos!