Я использую пользовательский segue для перемещения между двумя контроллерами представления. Пользовательский segue использует CGAffineTransformMakeScale для создания эффекта масштабирования на контроллере назначения.пользовательская ориентация segue, не использующая правильную ориентацию в ландшафте
Когда я запускаю проект в портретном режиме, все работает нормально, но когда я перехожу к пейзажу, возникает проблема. Контроллер назначения появляется на экране с ориентацией на портрете, затем он оживляет до нужного масштаба (1.0, 1.0), и когда анимация выполнена, он изменяется на правильную ориентацию. Это действительно сбивает меня с толку, и я не могу найти что-либо в Интернете по этой проблеме, поэтому любая помощь будет очень признательна.
В проекте, который я использую для тестирования, используются два контроллера вида, каждый с кнопкой, которая запускает сеанс.
Это мой CustomZoomSegue.m файл:
#import "CustomZoomSegue.h"
@implementation CustomZoomSegue
- (void)perform
{
UIViewController *destinationViewController = (UIViewController *)self.destinationViewController;
UIViewController *sourceViewController = (UIViewController *)self.sourceViewController;
UIWindow *mainWindow = [[UIApplication sharedApplication].windows objectAtIndex:0];
UIView *sourceView = [sourceViewController view];
UIView *destinationView = [destinationViewController view];
destinationView.frame = sourceView.frame;
[mainWindow addSubview:destinationView];
[destinationView setAlpha:0.0f];
[destinationView setTransform:CGAffineTransformMakeScale(0.0, 0.0)];
// slide newView over oldView, then remove oldView
[UIView animateWithDuration:0.8
animations:^{
[destinationView setTransform:CGAffineTransformMakeScale(1.0, 1.0)];
[destinationView setAlpha:1.0f];
}
completion:^(BOOL finished){
[destinationView removeFromSuperview];
[sourceViewController presentViewController:destinationViewController animated:NO completion:nil];
}];
}
@end
Кто-нибудь есть какие-либо идеи, почему это происходит? Это сводит меня с ума