禁用UIImagePickerController的自动旋转

时间:2013-04-23 15:45:42

标签: ios uiimagepickercontroller auto-rotation

我想禁用UIImagePickerView的自动旋转。所以我使用了以下代码:

UIDevice *currentDevice = [UIDevice currentDevice];


        [parentViewController presentViewController:imagePicker animated:YES completion:nil];

        while ([currentDevice isGeneratingDeviceOrientationNotifications])
            [currentDevice endGeneratingDeviceOrientationNotifications];

它会禁用ImagePickerView,但它也会禁用根视图的旋转。但我想在我的根视图控制器中使用自动旋转功能(或者我想仅在我的ImagePickerController中禁用自动旋转)。为了澄清,在禁用UIImagePickerController自动旋转之前,自动旋转在我的根视图中处于活动状态。

UPDATES&答案::

我找到了答案。编写以下代码以启用自动旋转:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

如果您有任何图像处理(我实际上是),请在完成所有图像处理任务后调用此方法。在我的情况下,我在图像处理之前调用它,并且它没有启用方向。

2 个答案:

答案 0 :(得分:-1)

这就是我的方式。 UIImageViewController是一个UIViewController,它有一个名为 - (BOOL)shouldAutorotate的方法;

我们可以做的是创建一个UIImageViewController的SubClass并重写shouldAutorotate方法。让我们说,我们的子课程' name是MyImageViewController。

然后MyImageViewController.h看起来像 -

#import <UIKit/UIKit.h>

@interface MyImageViewController : UIImagePickerController

@end

MyImageViewController.m文件看起来应该像 -

#import "MyImagePickerViewController.h"

@interface MyImagePickerViewController ()

@end

@implementation MyImagePickerViewController

- (void)viewDidLoad {
    [super viewDidLoad];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}

-(BOOL)shouldAutorotate{
    return NO;
}
@end

现在我们很高兴!而不是创建UIImagePickerViewController,我们可以在parentViewController中创建MyImagePickerViewController,如 -

MyImagePickerViewController *imagePicker = [[MyImagePickerViewController alloc] init];
[parentViewController presentViewController:imagePicker animated:YES completion:nil];

将shouldAutoRotate设置为NO时,它不会自动旋转;

答案 1 :(得分:-1)

试试这个:

@interface UIImagePickerController(addition)

@end
@implementation UIImagePickerController(addition)

-(BOOL)shouldAutorotate{
    return NO;
}

@end