Принудительная ориентация ландшафта в 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?
Привет
Ответы
Ответ 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;
}