ios中UIImagepickcontroller在只支持横屏或者竖屏情况下崩溃解决办法

来源:互联网 发布:erp java 开发工具 编辑:程序博客网 时间:2024/06/07 21:52

近期在坐一个ipad项目,只支持横屏,所以适配什么的都不用搞,但是问题来了,当我调UIImagepickcontroller的时候报错了,大概意思是说系统默认的时可以旋转屏幕的,而我的应用只支持横屏,所以崩溃了。怎么办?第一次遇见这样的问题,就纠结了好几天,然后各种上网搜,求大牛帮忙,最后用通知解决了。
废话不多说,但讲一下思路:
就是当我模态UIImagepickcontroller的时候,用一个通知,让应用支持横竖屏,当选完照片或者取消的时候,再发个通知让应用锁定横屏。
代码如下:

#import "AppDelegate.h"@property NSUInteger MYInterfaceOrientationMask;@property (nonatomic,strong) UIApplication *app;//发通知要执行的方法- (void)changeRotate:(NSNotification *)noti{    if ([noti.object isEqualToString:@"1"]) {        _MYInterfaceOrientationMask=UIInterfaceOrientationMaskLandscapeRight;    }else{        _MYInterfaceOrientationMask=UIInterfaceOrientationMaskAll;    }    [self application:_app supportedInterfaceOrientationsForWindow:_myWindow];}#if __IPAD_OS_VERSION_MAX_ALLOWED >= __IPAD_6_0- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{    _app=application;    _myWindow=window;    return _MYInterfaceOrientationMask;}#endif

你调用UIImagepickcontroller的地方发通知

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{    //让屏幕可以旋转    [[NSNotificationCenter defaultCenter]postNotificationName:@"changeRotate" object:@"0"];}- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{    //让屏幕旋转失效    [[NSNotificationCenter defaultCenter]postNotificationName:@"changeRotate" object:@"1"];}- (void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{    //让屏幕旋转失效    [[NSNotificationCenter defaultCenter]postNotificationName:@"changeRotate" object:@"1"];}

然后完美解决了,其实不算完美,还是有一个问题的,就是在开启横竖屏之后,用户竖屏过来之后,选完照片返回,应用还是会停留在竖屏界面,不过横屏过来之后就ok了!不懂的问我!

1 0