У меня есть приложение, в котором я создаю UIView для съемки и загрузки изображений. Мое приложение работает только в портретной ориентации, оно годами настраивалось с " поддерживаемой ориентацией интерфейса " в моем info.plist.

Моя проблема в том, что это происходит только на моем iPhone 11 на IOS 13, а НЕ на моем iphone7 с ios12.

  1. Мой вид отображается в портретной ориентации, как и всегда.
  2. У меня есть кнопка, которая открывает UIPickerViewController вот так:

    UIImagePickerController *picker = [[[UIImagePickerController alloc] init] autorelease];
    
    picker.delegate = self;
    
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    
    [self presentViewController:picker animated:true completion:nil];
    

Если я затем поверну камеру в альбомную ориентацию, затем сделаю снимок ИЛИ нажму «Отмена», мой UIView, который раньше был в портретном режиме, теперь будет в альбомной ориентации! Это явно выглядит супер странно.

Как только я помещаю его в портретную ориентацию, он твердо встает на место.

Опять же, это происходит только на IOS13, но я не знаю, как это решить.

Я попытался переопределить shouldAutorotateToInterfaceOrientation в моем UIView, это не помогло.

Ниже приведен снимок экрана, на котором показано, как это выглядит после того, как камера повернула его.

У кого-нибудь есть мысли ?? Указатели очень ценятся.

After

0
Mathias 8 Ноя 2019 в 11:57

2 ответа

Пользовательский контроллер представления унаследовал UIImagePickerController и переопределил shouldAutorotate.

0
vint 8 Ноя 2019 в 12:32

Попробуйте использовать этот класс:

class CustomUIImagePickerController: UIImagePickerController {

    override var shouldAutorotate: Bool {
        return false
    }

    override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return .portrait
    }
}

0
Flo 8 Ноя 2019 в 12:50