1

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

UIDevice *currentDevice = [UIDevice currentDevice];


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

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

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

更新和回答::

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

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

如果您有任何图像处理(实际上我有),请在完成所有图像处理任务后调用此方法。就我而言,我在图像处理之前调用了它,但它没有启用方向。

4

2 回答 2

-1

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

我们可以做的是创建一个 UIImageViewController 的 SubClass 并重写 shouldAutorotate 方法。假设我们的子类名称是 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

现在我们可以走了!我们可以在 parentViewController 中创建 MyImagePickerViewController,而不是创建 UIImagePickerViewController,例如 -

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

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

于 2015-04-24T09:04:22.363 回答
-1

尝试这个 :

@interface UIImagePickerController(addition)

@end
@implementation UIImagePickerController(addition)

-(BOOL)shouldAutorotate{
    return NO;
}

@end
于 2015-06-22T14:46:56.027 回答