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

近期在坐一个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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值