Подтвердить что ты не робот

Принудительная ориентация ландшафта в UIImagePickerController

Я новичок в разработке iOS, и я разрабатываю свое первое приложение. (извините, если я спрашиваю новичку вопрос)

Мое приложение находится в портретной ориентации, за исключением того места, где я использую UIImagePickerController, чтобы сделать снимок, который будет использоваться в приложении, что я делаю:

UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeImage];
picker.allowsEditing = NO;
[self presentModalViewController:picker animated:YES];

Как мое приложение находится в Портрет, мне нужно сделать что-то в UIImagePickerController только в только. если я попытаюсь использовать:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

Кажется, что я не могу использовать, потому что мой Xcode идентифицируется как ошибка в этих строках (вероятно, из-за Xcode версии, я не уверен). И я не уверен, но кажется, что если я разрабатываю для iOS 5.1, мне нужно будет что-то реализовать для iOS 6.0, правильно ли это?

Может кто-нибудь помочь мне понять, что нужно сделать для этого UIImagePickerController, и только этот контроллер представления в приложении работает в альбомной ориентации и работает в iOS 5.1 и 6?

Привет

4b9b3361

Ответ 1

В соответствии с Справочник класса UIImagePickerController

Важно. Класс UIImagePickerController поддерживает только портретный режим. Этот класс предназначен для использования как есть и не поддерживает подклассы. Иерархия представления для этого класса является частной и не может быть изменена с одним исключением. Вы можете назначить настраиваемый вид свойства cameraOverlayView и использовать это представление для представления дополнительной информации или управления взаимодействием между интерфейсом камеры и вашим кодом.

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

Ответ 2

Создайте класс с именем "CUIImagePickerController", унаследованный от UIImagePickerController, переопределите следующие методы, теперь используйте этот класс!

@interface CUIImagePickerController : UIImagePickerController

@end

@implementation CUIImagePickerController
- (BOOL)shouldAutorotate {
    return NO;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orient {
    return (orient == UIInterfaceOrientationLandscapeLeft) | (orient == UIInterfaceOrientationLandscapeRight);
}
@end

Привет,

Ответ 3

попробуйте выполнить следующие методы:

- (BOOL)shouldAutorotate
{

return YES;
}

-(NSUInteger)supportedInterfaceOrientations

{
return UIInterfaceOrientationMaskLandscape;

}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
  return UIInterfaceOrientationLandscapeRight;
}