数码资讯
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了!不懂的问我!
声明:本文内容用于数码产品信息整理与选购参考,具体价格、库存、售后政策以官方渠道和电商页面实时信息为准。