2013-04-23 84 views
1

我想禁用UIImagePickerView的自動旋轉。所以我使用了下面的代碼:禁用UIImagePickerController的自動旋轉

UIDevice *currentDevice = [UIDevice currentDevice]; 


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

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

它禁用ImagePickerView,但它也禁用了旋轉根視圖。但我想在我的根視圖控制器中的自動旋轉功能(或者我只想在我的ImagePickerController中禁用自動旋轉功能)。爲了澄清,在禁用UIImagePickerController自動旋轉之前,自動旋轉在我的根視圖中處於活動狀態。

最新通報&答::

我找到了答案。寫下面的代碼啓用自動旋轉:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 

如果您有任何圖像處理(其實我有),調用此方法完成所有圖像處理任務之後。在我的情況下,我在圖像處理之前調用它,並且它沒有啓用方向。

回答

-1

這就是我的做法。 UIImageViewController是一個UIViewController,它有一個名爲 - (BOOL)shouldAutorotate的方法;

我們可以做的是創建一個UIImageViewController的子類並重寫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 

現在我們是好去!而不是創造的UIImagePickerViewController,我們可以在parentViewController創建MyImagePickerViewController喜歡 -

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

爲您的shouldAutoRotate設置爲NO它不會自動旋轉;

-1

試試這個:

@interface UIImagePickerController(addition) 

@end 
@implementation UIImagePickerController(addition) 

-(BOOL)shouldAutorotate{ 
    return NO; 
} 

@end