Sinto que é um paradigma bastante comum mostrar / ocultar UIViews
, na maioria das vezes UILabels
, dependendo da lógica de negócios. Minha pergunta é: qual é a melhor maneira de usar o AutoLayout para responder a visualizações ocultas como se seu quadro fosse 0x0. Aqui está um exemplo de uma lista dinâmica de 1-3 recursos.
No momento, tenho um espaço superior de 10 px do botão até o último rótulo, o que obviamente não desliza para cima quando o rótulo está oculto. A partir de agora, criei uma saída para essa restrição e modifique a constante, dependendo de quantos rótulos estou exibindo. Obviamente, isso é um pouco invasivo, pois estou usando valores constantes negativos para pressionar o botão sobre os quadros ocultos. Também é ruim porque não está sendo restrito a elementos de layout reais, apenas cálculos estáticos furtivos com base em alturas / preenchimentos conhecidos de outros elementos e obviamente lutando contra o que o AutoLayout foi criado.
Obviamente, eu poderia simplesmente criar novas restrições, dependendo dos meus rótulos dinâmicos, mas isso é muita microgerenciamento e muita verbosidade para tentar recolher apenas alguns espaços em branco. Existem abordagens melhores? Alterar o tamanho do quadro 0,0 e permitir que o AutoLayout faça seu trabalho sem manipulação de restrições? Removendo completamente as visualizações?
Honestamente, apenas modificar a constante do contexto da exibição oculta exige uma única linha de código com cálculo simples. Recriar novas restrições com constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:
parece muito pesado.
Editar fev 2018 : Veja a resposta de Ben com UIStackView
s