Animar alterações durante a rotação do dispositivo com base no elemento de tamanho será após a rotação ser concluída

Eu tenho uma configuração dinâmica de botões que se ajustam automaticamente em largura e altura com base nas restrições de layout automático definidas em um storyboard. Quando em retrato, os botões têm larguras e alturas iguais para que o quadro fique perfeitamente quadrado e, quando o dispositivo é girado para paisagem, os botões ficam mais curtos e amplos. Eu arrumeicornerRadius nas camadas dos botões, para que fiquem perfeitamente circulares quando em retrato, e isso funciona bem, mas quando eu giro para a paisagem, o raio do canto não parece mais certo, obviamente. Eu preciso mudar isso para que fique oval. O problema é que, não importa onde eu tente colocar esse código, não consigo obter a largura e a altura corretas dos botões após a rotação. Quero que isso ocorra enquanto o dispositivo estiver sendo girado - não quero esperar até que a rotação seja concluída. Idealmente, ocornerRadius animaria a mudança enquanto a transição anima.

Se eu usarviewWillLayoutSubviews ouviewDidLayoutSubviews, ele obtém o quadro do botão corretamente quando o aplicativo é iniciado, mas, ao girar para o modo paisagem, esse método é chamado antes que o quadro do botão seja atualizado para a nova orientação, portanto, não consigo calcular o raio correto do canto.

Se eu usarviewWillTransitionToSize:withTransitionCoordinator: ouwillTransitionToTraitCollection:withTransitionCoordinator: ouwillRotateToInterfaceOrientation, ele não é chamado quando o aplicativo é iniciado e, ao girar o dispositivo, ele é chamado antes que o quadro seja atualizado para o novo tamanho.

Se eu usarwillAnimateRotationToInterfaceOrientation, ele não é chamado quando o aplicativo é iniciado, mas ao girar o dispositivo, ele recebe corretamente o novo quadro de botão. Mas esse método está obsoleto.

Portanto, a pergunta é: qual método você pode usar para definir as propriedades de um botão com base no tamanho que o botão terá quando a rotação for concluída, que é chamada antes que a rotação seja concluída?

Observe que ele precisa ser chamado para todas as alterações de orientação, não apenas as alterações de classe de tamanho (o iPad giratório não altera a classe de tamanho). Eu só preciso dar suporte ao iOS 8.0 ou superior.

Este é o código que estou colocando nos métodos para saber se está obtendo o tamanho correto:

println("\(button.frame.size.width) x \(button.frame.size.height)")

questionAnswers(2)

yourAnswerToTheQuestion