问题 在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中工作?

问候


13127
2018-01-31 04:34


起源

你在利用这个吗? developer.apple.com/library/ios/#documentation/uikit/reference/... - Nitin Alabur


答案:


按照 UIImagePickerController类参考

重要:The UIImagePickerController class仅支持纵向模式。此类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不能修改,但有一个例外。您可以为自定义视图分配 cameraOverlayView 属性并使用该视图来显示其他信息或管理相机界面与代码之间的交互。

因此,看起来强制横向模式不受支持和阻止,除非您通过使用自定义替换默认控件来执行此操作 cameraOverlayView


14
2018-05-02 19:59





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

@interface CUIImagePickerController : UIImagePickerController

@end

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

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

问候,


1
2018-01-31 05:07



我试过这个,但它没有用 - Fernando
也许是因为我的设备运行iOS 6? - Fernando
适用于iOS 6.1 - Dmitry Khryukin
子类化UIImagePickerController是禁止的;) - raistlin
@raistlin不,这不是禁止的。我已经做了多年了。 - rmaddy


尝试实现以下方法:

- (BOOL)shouldAutorotate
{

return YES;
}

-(NSUInteger)supportedInterfaceOrientations

{
return UIInterfaceOrientationMaskLandscape;

}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
  return UIInterfaceOrientationLandscapeRight;
}

-1
2018-01-31 04:44



试了一下,但它只旋转了按钮来拍摄照片,并且它甚至在拍摄之前旋转的相机图像,显示非常奇怪。任何想法? - Fernando
适用于iOS 6.1 - Dmitry Khryukin