Заставить UIImagePickerController сфотографировать в портретной ориентации / размерах iOS
Единственная разрешенная ориентация в моем приложении - альбомная. Я устанавливаю это в свойствах проекта под target> summery и разрешаю только портрет вshouldAutorotateToInterfaceOrientation
Проблема заключается в том, что когда я делаю снимок, держа телефон горизонтально (в альбомной ориентации), снимок будет сделан в горизонтальной ориентации, а пользовательский интерфейс останется в портретном режиме.
Это означает, что в альбомном режиме я получаю широкое изображение 3264 x 2448 вместо высокого изображения (2448 x 3264) в портретном режиме.
Затем пользователь может обрезать изображение, но если изображение получено в ландшафтном режиме, я получаю очень уродливые растянутые изображения. Добавление границ или переключение пользовательского интерфейса в альбомный режим не вариант.
Есть ли способ заставитьUIImagePickerController
сделать фотографию в портретном измерении, хотя телефон держится горизонтально (альбомный режим)?
Я инициализируюUIImagePickerController
со следующими настройками:
imagePicker =[[UIImagePickerController alloc] init];
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureModePhoto;
imagePicker.cameraDevice = UIImagePickerControllerCameraDeviceRear;
imagePicker.showsCameraControls = NO;
imagePicker.modalPresentationStyle = UIModalPresentationFullScreen;
imagePicker.wantsFullScreenLayout = YES;
imagePicker.cameraViewTransform = CGAffineTransformScale(imagePicker.cameraViewTransform,CAMERA_TRANSFORM, CAMERA_TRANSFORM);
imagePicker.navigationBarHidden = YES;
imagePicker.toolbarHidden = YES;
[self presentModalViewController:imagePicker animated:NO];
imagePicker.cameraOverlayView = self.cameraOverlay;
imagePicker.cameraFlashMode = UIImagePickerControllerCameraFlashModeOff;