Мои подвидности имеют разную компоновку, когда в портретной и альбомной ориентации. Макет основан на структуре супервизора и не является тривиальным (не может быть достигнуто с использованием авторезистирующих пружин и распорок).Получение правильной рамки внутри willRotateToInterfaceOrientation
Проблема в том, что если я изменяю рамку подвидных объектов во время воспроизведения willRotateToInterfaceOrientation, анимация верна, но в кадре супервизор по-прежнему является рамкой из старой ориентации.
Если я изменяю subViews во время didRotateFromInterfaceOrientation, кадр суперверсии действительно правильный, но смена кадра происходит только после вращающейся анимации, и это выглядит не очень хорошо.
Каков правильный способ изменения рамок подвид при изменении ориентации?
Я решил эту проблему, написав метод в каждом подсмотре, который будет обрабатывать часть изменения кадра. Я установлю кадр родительского представления в willRotateToInterfaceOrientation, а затем сгенерирую новый аналогичный фрейм с использованием функции CGFrameMake и передам его каждому подвидю. Это сработало для меня .... проверьте, полезно ли это. – Mohammad
Я не совсем понял ваш ответ. В willRotateToInterface я до сих пор не знаю рамки супервизора, потому что вращения еще не произошло. Это проблема. – adamsiton
Я не использую рамку superView для вращения подзонов. Я вычисляю, что будет стоить для кадра superView после вращения, а затем создаст новый CGRect на основе вычислений, а затем передаст это для обработки метода Orientation для каждого subView. Если вы не можете рассчитать, какая будет ценность для кадра SuperView после вращения, то выше не будет работать для вас. – Mohammad