Problemas de autolayout no iOS8 com código que funciona bem no iOS7

Estou desenvolvendo um aplicativo para iPhone e iPad. Ele suporta iOS6 e iOS7 e usa o layout automático exclusivamente.

Na semana passada, quando a Apple anunciou que o iOS8 estava pronto para o horário nobre, atualizei um dos meus iPhones e um iPad para o iOS8. Também instalei meu XCODE na versão 6. Tenho o 2º iPhone que deixei no iOS7.

Eu gerei novos executáveis com o Xcode 6 e fiquei angustiado ao ver que seus layouts de tela estavam bagunçados quando executados em meus dispositivos executando o iOS8, mas ainda bem no iOS7. Isso é verdade tanto nos meus dispositivos físicos quanto nos emuladores do Xcode.

Demorou muito tempo para cavar, mas agora estou bem claro sobre o que está acontecendo, embora não saiba o porquê.

Especificamente, certas operações de layout automático estão falhando para mim no iOS8, mas são boas no iOS7.

Alguns exemplos envolvendo um botão que eu estou colocando em uma visão subjacente cujo tamanho é igual ao tamanho da tela:

(1) Se eu pedir ao layout automático para posicionar o centro horizontal do botão (CX) igual ao centro horizontal da vista subjacente, o resultado é que o centro horizontal do botão é colocado na borda esquerda da vista subjacente.

(2) Se eu pedir ao layout automático para tornar a largura do botão igual a 50% da largura da visualização subjacente, ela não terá largura.

Sou capaz de solucionar esses problemas da seguinte maneira:

(1) Peço ao layout automático para posicionar o centro do botão igual à borda esquerda da vista subjacente mais 50% da largura da tela.

(2) Peço ao layout automático que torne a largura do botão igual a 50% da largura da tela.

Estou lentamente pegando meu caminho, com soluções alternativas como essas, de volta ao código de layout automático que funciona para mim no iOS7 e iOS8. Mas estou realmente me perguntando o que está acontecendo aqui.

Parece que o layout automático não pode determinar o tamanho da vista subjacente e, portanto, os cálculos de layout automático que exigem que as informações falhem. Mas ele sabe onde estão as bordas superior e esquerda da visualização para que os cálculos com base nesses dados sejam bem-sucedidos.

Este é um aplicativo grande e eu escrevi muitas centenas de linhas de código de layout automático para iOS6 e iOS7 que funcionam perfeitamente para mim.

Estive aprimorando e tentando as coisas agora com o iOS8 há três dias e não sou mais sábio do que era quando comecei.

Alguém tem alguma sugestão ou opinião sobre qual pode ser o problema aqui?

questionAnswers(3)

yourAnswerToTheQuestion