UIImagePickerViewController в ландшафтном режиме

введите описание изображения здесь Я работаю над приложением, которое полностью в ландшафтном режиме. По одному из представлений мне нужно открыть камеру (UIImagePickerController) с наложением. Но когда я нажимаю кнопку, чтобы открыть камеру, она обрушивается на эту проблему, т. Е. Причина:

«Поддерживаемые ориентации не имеют общей ориентации с приложением, и shouldAutorotate возвращает ДА ​​'

Я также помещал эту строку в viewcontroller, но не влиял.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft); } 

Пожалуйста, дайте мне некоторое представление, чтобы заставить его работать.

Если вы используете UINavigationController качестве контроллера базового представления, этот фрагмент кода, который вы предоставили, просто не работает. Поскольку вы добавляете этот код в UIViewController но он уже внедрен в UINavigationController .

Чтобы преодолеть эту проблему, вы должны создать подкласс UINavigationController и добавить этот связанный с ландшафтом код в этот подкласс. Затем назначьте этот подкласс базовому навигационному контроллеру вашей раскадровки. Тогда этот вопрос будет решен.

Это ваш подкласс класса навигации .h-файл

 @interface YourCustomNavigationController : UINavigationController @end 

И добавьте это в свой файл .m-файла подкласса контроллера навигации.

 - (BOOL)shouldAutorotate { //returns true if want to allow orientation change return YES ; } - (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscapeLeft; } - (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation { return UIInterfaceOrientationLandscapeLeft; } 

И не забудьте присвоить этот класс базовому навигационному контроллеру с помощью инсталлятора идентификации конструктора интерфейса.

Настройки проекта,

введите описание изображения здесь

РЕДАКТИРОВАТЬ:

Вы можете представить UIImagePickerController в ландшафтном режиме. Независимо от того, что говорит документация, вы можете фактически подклассифицировать его и переопределить его функциональность для работы в ландшафтном режиме. (по крайней мере, его работа над iOS 7)

Для этого вы должны создать подкласс UIImagePickerController и добавить в этот подкласс выше строки. Настройки проекта должны быть такими же, как снимок экрана (по крайней мере, один ландшафтный режим и один портретный режим должны быть отмечены галочкой).

Затем используйте этот подклассифицированный контроллер ImagePicker, когда вы представляете камеру. Он будет успешно загружать камеру в ландшафтном режиме. Но стандартные элементы управления камерой будут смещены и испорчены. Поэтому лучше скрыть defaultControlls ( picker.showsCameraControls = NO; ) так же, как и вы, и вместо этого использовать оверлейное представление.

  • Любой способ представить панель навигации для UIImagePickerController, тип источника UIImagePickerControllerSourceTypeCamera, в iOS 7?
  • ipad UIImagePickerController videoQuality
  • videoMaximumDuration не ограничивает продолжительность
  • Почему мое приложение падает на iOS 10 при многократном представлении и использовании UIImagePickerControllers?
  • UIImagePickerController с функцией cameraOverlayView фокусируется при нажатии кнопки в наложении
  • Установка делегата для UIImagePicker возвращает ошибку
  • cameraOverlayView, чтобы обрезать результат в UIImagePickerController
  • Загрузка большого видео через NSURLSession вызывает крушение памяти
  • При сохранении записанного видео, которое слишком велико, сбой приложений
  • Когда следует использовать UIImagePickerControllerSourceTypePhotoLibrary вместо UIImagePickerControllerSourceTypeSavedPhotosAlbum?
  • ZBar SDK iOS: удалить кнопку отмены в окне сканера?
  • Давайте будем гением компьютера.