Ocultando uma UIView usando restrições de AutoLayout

De tempos em tempos, tenho uma subvisão que gostaria de remover de um layout. Não apenas deve ser oculto, mas também não deve ser considerado parte do "fluxo" da visualização. Um exemplo:

Estou procurando uma estratégia para ocultar a exibição laranja programaticamente. O layout das caixas, e seu conteúdo, é via autolayout. Duas coisas a serem observadas:

a caixa laranja está definindo sua altura vertical com base no conteúdo, além de algumas compensações superior / inferior das margens. Portanto, definir o texto dos rótulos como nulo apenas reduzirá a visualização para suas margens internas, não terá altura de 0.Da mesma forma, o espaçamento vertical entre as três caixas significa que, mesmo que a altura da caixa laranja seja 0, o espaço entre vermelho e amarelo será duas vezes maior que o necessário.Uma possível solução

Minha melhor sugestão é adicionar uma restrição à caixa laranja, definindo sua altura como 0. Para que isso funcione, preciso usar prioridades não necessárias para todas as restrições verticais dentro da caixa laranja. Ao mesmo tempo, o contêiner deve atualizar a constante para a restrição que separa as caixas. Não gosto muito dessa abordagem, já que a classe orange box está definindo suas restrições internas com o comportamento da superview em mente. Talvez eu possa conviver com isso se a exibição da caixa laranja expor um método de "recolhimento" que adicione a restrição de altura 0 em si.

Existe uma abordagem melhor?

questionAnswers(4)

yourAnswerToTheQuestion