Como esconder um elemento visual em swift
Existe algumas formas de se esconder um elemento visual em uma UIView. Neste artigo vou falar um pouco mais sobre elas, suas vantagens e desvantagens;
Parece algo bobo, mas tem toda uma ciência por trás!
Constraints:
Podemos simplismente alterar a constant das constraints da view que queremos esconder para 0 (eg: altura e/ou largura) e aí ela vai sumir da tela.
Mas para o exemplo acima, se a gente alterar essas constraints da view 1 (que desejamos esconder) o layout vai se desconfigurar todo porque vai continuar querendo respeitar as constraints existentes de distância, mesmo com a view 1 tendo tamanho (0,0).
isHidden = true
Eu vejo muita gente se confundindo e utilizando este método para esconder um elemento visual dentro de uma UIView. Pegando o exemplo anterior, qual será o resultado se a gente aplicar view1.isHidden = true? Dessa forma a view vai continuar aonde ela está, e todas as constraints também. O que vai sumir é a camada de renderização (layer) da view. Então ficamos com um espaço em branco entre a view 2 e view 3, o que não é a melhor das soluções.
removeFromSuperview()
Essa é a maneira mais complexa de se esconder uma view, mas também é a que te permite ter o maior controle sobre o layout. Ao chamar removeFromSuperview() você estará removendo a view da pilha de views da superview, da memória e ela estará levando junto todas as constraints. Então, para esse caso acima demonstrado, temos que adicionar constraints para lidar quando a view não estiver mais lá.
Ela pode ter prioridade baixa e somente quando necessária será aplicada. Vale lembrar também que se quisermos adicionar a view novamente devemos fazer com addSubview já que aquela instancia anterior não existe mais. Outro ponto é que se você estiver usando IBOutlets e eles estiverem com force-unwrap (!) o app vai crashar caso você tente acessar a view depois de remover a mesma.