Você não está descrevendo a escala para ajustar; você está descrevendo o ajuste do aspecto. (Editei sua pergunta a esse respeito.) A subvisão se torna a maior possível, mantendo sua proporção e ajustando-se inteiramente ao pai.
De qualquer forma, você pode fazer isso com o layout automático. Você pode fazer isso totalmente no IB a partir do Xcode 5.1. Vamos começar com algumas visualizações:
A exibição em verde claro tem uma proporção de 4: 1. A vista verde escura tem uma proporção de 1: 4. Vou configurar restrições para que a visualização azul preencha a metade superior da tela, a visualização rosa preencha a metade inferior da tela, e cada visualização verde se expanda o máximo possível, mantendo a proporção e a adequação à sua recipiente.
Primeiro, criarei restrições nos quatro lados da vista azul. Vou fixá-lo ao seu vizinho mais próximo em cada borda, com uma distância de 0. Certifique-se de desativar as margens:
Observe que eu não atualizo o quadro ainda. Acho mais fácil deixar espaço entre as visualizações ao configurar restrições e apenas definir as constantes como 0 (ou o que for) manualmente.
Em seguida, fixo as bordas esquerda, inferior e direita da visualização rosa no vizinho mais próximo. Não preciso configurar uma restrição de borda superior porque sua borda superior já está restrita à borda inferior da visualização azul.
Também preciso de uma restrição de alturas iguais entre as vistas rosa e azul. Isso fará com que cada um preencha metade da tela:
Se eu disser ao Xcode para atualizar todos os quadros agora, recebo o seguinte:
Portanto, as restrições que estabeleci até agora estão corretas. Eu desfiz isso e começo a trabalhar na visualização verde clara.
O ajuste da aparência da visualização em verde claro requer cinco restrições:
- Uma restrição de proporção de prioridade necessária na exibição verde clara. Você pode criar essa restrição em um xib ou storyboard com o Xcode 5.1 ou posterior.
- Uma restrição de prioridade exigida que limita a largura da vista verde clara a ser menor ou igual à largura do seu contêiner.
- Uma restrição de alta prioridade que define a largura da exibição em verde claro como igual à largura do seu contêiner.
- Uma restrição de prioridade necessária que limita a altura da vista verde clara a ser menor ou igual à altura do seu contêiner.
- Uma restrição de alta prioridade que define a altura da vista verde clara como igual à altura do contêiner.
Vamos considerar as duas restrições de largura. A restrição menor que ou igual, por si só, não é suficiente para determinar a largura da visualização em verde claro; muitas larguras caberão na restrição. Como existe ambiguidade, o autolayout tentará escolher uma solução que minimize o erro na outra restrição (de alta prioridade, mas não necessária). Minimizar o erro significa tornar a largura o mais próximo possível da largura do contêiner, sem violar a restrição menor ou igual à necessária.
O mesmo acontece com a restrição de altura. E como a restrição de proporção também é necessária, ela só pode maximizar o tamanho da subvisão ao longo de um eixo (a menos que o contêiner tenha a mesma proporção que a subvisão).
Então, primeiro eu crio a restrição de proporção:
Em seguida, crio restrições iguais de largura e altura com o contêiner:
Preciso editar essas restrições para serem menores ou iguais:
Em seguida, preciso criar outro conjunto de restrições iguais de largura e altura com o contêiner:
E preciso tornar essas novas restrições abaixo da prioridade necessária:
Por fim, você solicitou que a subvisão seja centralizada em seu contêiner, então eu configurarei essas restrições:
Agora, para testar, selecionarei o controlador de exibição e pedirei ao Xcode para atualizar todos os quadros. Isto é o que eu recebo:
Opa! A subvisão foi expandida para preencher completamente seu contêiner. Se eu selecioná-lo, posso ver que, de fato, ele mantém sua proporção, mas está preenchendo um aspecto em vez de um ajuste de aspecto .
O problema é que, com uma restrição menor ou igual, importa qual é a visão em cada extremidade da restrição, e o Xcode configurou a restrição oposta à minha expectativa. Eu poderia selecionar cada uma das duas restrições e reverter seus primeiro e segundo itens. Em vez disso, vou apenas selecionar a subvisão e alterar as restrições para serem maiores que ou iguais:
O Xcode atualiza o layout:
Agora, faço as mesmas coisas na visualização verde escura na parte inferior. Eu preciso ter certeza de que a proporção é de 1: 4 (o Xcode o redimensionou de uma maneira estranha, pois não tinha restrições). Não mostrarei as etapas novamente, pois são iguais. Aqui está o resultado:
Agora posso executá-lo no simulador do iPhone 4S, que possui um tamanho de tela diferente do utilizado pelo IB, e testar a rotação:
E posso testar no simulador do iPhone 6:
Enviei meu storyboard final para esta essência para sua conveniência.