Выдвиньте контроллер портретного представления по контроллеру Landscape View на iPhone в iOS 13 - PullRequest
1 голос
/ 04 октября 2019

У меня есть некоторый код, который работал отлично, пока я не обновил до iOS 13, и теперь он не работает правильно, и мне нужна помощь, чтобы это исправить. У меня есть альбомно-ориентированный вид, который выдвигает портретный вид. После обновления до iOS 13 на iPhone больше не отображается изображение в вертикальной ориентации, оно отображается в альбомной ориентации. Как я могу заставить его быть портретной ориентацией?

Я искал подобные проблемы здесь, но все они были старыми, и это, кажется, характерно для iOS 13. Пожалуйста, не говорите мне, чтобы перепроектировать интерфейс--Я уже пытался спросить клиента, и мне сказали, что они хотят сохранить текущее поведение. (Представления находятся в отдельных раскадровках из-за потребностей архитектуры).

Надеюсь, есть какое-то простое решение, которое я пропустил. Спасибо!

Файл проекта поддерживает любую ориентацию, кроме перевернутого портрета.

Упрощенный проект, показывающий, что проблема общедоступна: https://github.com/dpreuitt/testPortrait.git

Вот некоторый код:

LandscapeViewController:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (BOOL) shouldAutorotate {
    return YES;
}

- (UIInterfaceOrientationMask) supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskLandscape;
}

- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationLandscapeLeft;
}


- (IBAction)pushPortrait:(id)sender
{
    UIStoryboard *portraitStoryboard = [UIStoryboard storyboardWithName:@"Portrait" bundle:nil];
    PortraitViewController* loginController = [portraitStoryboard instantiateViewControllerWithIdentifier:@"PortraitVC"];
    dispatch_async(dispatch_get_main_queue(), ^(){
        [self presentViewController:loginController animated:YES completion:nil];
    });
}

Контроллер книжного представления:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
}

- (BOOL) shouldAutorotate {
    return YES;
}

- (UIInterfaceOrientationMask) supportedInterfaceOrientations {
    return UIInterfaceOrientationMaskPortrait;
}

- (UIInterfaceOrientation) preferredInterfaceOrientationForPresentation {
    return UIInterfaceOrientationPortrait;
}

(В готовом проекте push-код может быть вызван из фонового потока, таким образомнеобходимость "get_main_queue")

Пример проекта имеет альбомную ориентацию с кнопкой. При нажатии на кнопку должен появиться портретно-ориентированный контроллер вида, но, к сожалению, он появляется в ландшафтном режиме.

1 Ответ

0 голосов
/ 10 октября 2019

Настройка UIModalPresentationStyle на книжной раскадровке на FullScreen заставила его работать.

...