我是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中工作?
问候
按照 UIImagePickerController类参考
重要:The UIImagePickerController
class仅支持纵向模式。此类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不能修改,但有一个例外。您可以为自定义视图分配 cameraOverlayView 属性并使用该视图来显示其他信息或管理相机界面与代码之间的交互。
因此,看起来强制横向模式不受支持和阻止,除非您通过使用自定义替换默认控件来执行此操作 cameraOverlayView
。
创建一个名为“CUIImagePickerController”的类,继承自UIImagePickerController,覆盖以下方法,现在使用这个类!
@interface CUIImagePickerController : UIImagePickerController
@end
@implementation CUIImagePickerController
- (BOOL)shouldAutorotate {
return NO;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orient {
return (orient == UIInterfaceOrientationLandscapeLeft) | (orient == UIInterfaceOrientationLandscapeRight);
}
@end
问候,
尝试实现以下方法:
- (BOOL)shouldAutorotate
{
return YES;
}
-(NSUInteger)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskLandscape;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationLandscapeRight;
}