我想禁用UIImagePickerView的自动旋转。所以我使用了以下代码:
UIDevice *currentDevice = [UIDevice currentDevice];
[parentViewController presentViewController:imagePicker animated:YES completion:nil];
while ([currentDevice isGeneratingDeviceOrientationNotifications])
[currentDevice endGeneratingDeviceOrientationNotifications];
它会禁用ImagePickerView,但它也会禁用根视图的旋转。但我想在我的根视图控制器中使用自动旋转功能(或者我想仅在我的ImagePickerController中禁用自动旋转)。为了澄清,在禁用UIImagePickerController自动旋转之前,自动旋转在我的根视图中处于活动状态。
UPDATES&答案::
我找到了答案。编写以下代码以启用自动旋转:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
如果您有任何图像处理(我实际上是),请在完成所有图像处理任务后调用此方法。在我的情况下,我在图像处理之前调用它,并且它没有启用方向。
答案 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