Анимация изменений во время вращения устройства на основе размера элемента будет после завершения вращения

У меня есть динамическая настройка кнопок, которые автоматически настраиваются по ширине и высоте на основе ограничений автоматического макета, установленных в раскадровке. В портретной ориентации кнопки имеют одинаковую ширину и высоту, поэтому рамка имеет идеальный квадрат, а когда устройство поворачивается в горизонтальное положение, кнопки становятся короче и шире. Я поставилcornerRadius на слоях кнопок, поэтому они идеально круглые в портретной ориентации, и это хорошо работает, но когда я поворачиваюсь в альбомной ориентации, радиус угла больше не выглядит правильным. Мне нужно изменить это, чтобы оно стало овальным. Проблема в том, что где бы я ни пытался поместить этот код, я не могу получить правильную ширину и высоту кнопок, которые будут после поворота. Я хочу, чтобы это происходило во время вращения устройства - не хочу ждать, пока вращение не завершится. В идеалеcornerRadius оживил бы изменение, в то время как переход оживляет.

Если я используюviewWillLayoutSubviews или жеviewDidLayoutSubviews, он правильно получает рамку кнопки при запуске приложения, но после поворота в альбомную ориентацию этот метод вызывается до обновления рамки кнопки для новой ориентации, поэтому я не могу рассчитать правильный радиус угла.

Если я используюviewWillTransitionToSize:withTransitionCoordinator: или жеwillTransitionToTraitCollection:withTransitionCoordinator: или жеwillRotateToInterfaceOrientation, оно не вызывается при запуске приложения, и при повороте устройства оно вызывается до обновления кадра для нового размера.

Если я используюwillAnimateRotationToInterfaceOrientation, оно не вызывается при запуске приложения, но после вращения устройства оно правильно получает новый кадр кнопки. Но этот метод не рекомендуется.

Таким образом, вопрос в том, какой метод вы можете использовать для установки свойств кнопки на основе размера кнопки, который будет иметь место после завершения вращения, который вызывается до завершения вращения?

Обратите внимание, что его нужно вызывать для каждого изменения ориентации, а не только для изменения класса размера (вращающийся iPad не меняет класс размера). Мне нужно только поддерживать iOS 8.0+.

Вот код, который я помещаю в методы, чтобы узнать, получает ли он правильный размер:

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

Ответы на вопрос(2)

Ваш ответ на вопрос