12

我是 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];

由于我的应用程序在Portrait中,我需要使UIImagePickerController仅在Landscape中。如果我尝试使用:

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

看来我不能使用,因为我的 Xcode 在这行中识别为错误(可能是因为 Xcode 的版本,我不确定)。而且我不确定,但似乎如果我正在为iOS 5.1开发,我也需要为 iOS 6.0实现一些东西,对吗?

有人可以帮助我了解制作这个UIImagePickerController需要什么,并且只有应用程序中的这个视图控制器才能在横向方向工作并在 iOS 5.1 和 6 中工作?

问候

4

3 回答 3

14

根据UIImagePickerController 类参考

重要提示UIImagePickerController该类仅支持纵向模式。此类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改,但有一个例外。您可以将自定义视图分配给cameraOverlayView属性,并使用该视图来呈现附加信息或管理相机界面和代码之间的交互。

所以看起来强制横向模式是不受支持和不鼓励的,除非您通过将默认控件替换为自定义cameraOverlayView.

于 2013-05-02T19:59:15.463 回答
1

创建一个继承自 UIImagePickerController 的名为“CUIImagePickerController”的类,重写以下方法,现在使用这个类!

@interface CUIImagePickerController : UIImagePickerController

@end

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

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

问候,

于 2013-01-31T05:07:39.103 回答
-1

尝试实现以下方法:

- (BOOL)shouldAutorotate
{

return YES;
}

-(NSUInteger)supportedInterfaceOrientations

{
return UIInterfaceOrientationMaskLandscape;

}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
  return UIInterfaceOrientationLandscapeRight;
}
于 2013-01-31T04:44:43.660 回答