iOS 8下UIImagePickerController弹出拍照界面后,镜头旋转了90°
2016-03-21 17:05
609 查看
最近项目中的UIImagePickerController在iOS 8.1上使用的时候,出现了一个蛋疼的问题,pad水平放置,推出UIImagePickerController,拍照的时候发现,镜头莫名的旋转了90°,也就是说如果你去拍一个站着的人,发现他是躺着的,,,项目是限制Landscape两个方向的,试了网上一些解决办法,都是不行,至今没弄明白原因,除了iOS 8.1其他都正常,但是先上一个解决办法吧,不然boss吃了我:
注意要点
只有先水平放置present出UIImagePickerController时,才会出现问题
此时设备的orientation应该是face up
可以看出,其实就是将cameraView旋转成正常方向。
———————–2016-4-6————————–
最近发现上面的解决方式仍然有问题:现在imagePicker打开相机时,镜头是正常的,但是旋转pad,镜头又再次旋转90°。
增加了一段代码,完善后的地址:http://blog.csdn.net/u010731949/article/details/51075337
思路是:监听设备旋转通知,当设备旋转监听到pad旋转到UIDeviceOrientationPortraitUpsideDown、或者UIDeviceOrientationPortrait时,恢复imagePicker到原来的镜头方向_imagePicker.cameraViewTransform = CGAffineTransformMakeRotation(0); 当然如果默认应用是竖屏的,那么相应的对旋转到UIDeviceOrientationLandScape方向进行处理
注意要点
只有先水平放置present出UIImagePickerController时,才会出现问题
此时设备的orientation应该是face up
// 调整imagePickerController的方向,弥补iOS8时水平放置pad,imagePickerController默认竖屏,导致镜头旋转90° NSString *version = [[[UIDevice currentDevice] systemVersion] substringToIndex:3]; if ([[UIDevice currentDevice] orientation] == 5 && [version isEqualToString:@"8.1"]) { // face up if ([[UIApplication sharedApplication] statusBarOrientation] == 4) { // 如果应用处于landscaperight imagePicker.cameraViewTransform = CGAffineTransformMakeRotation(M_PI_2); // 顺时针旋转 } else if ([[UIApplication sharedApplication] statusBarOrientation] == 3) { // 如果应用处于landscapeleft imagePicker.cameraViewTransform = CGAffineTransformMakeRotation(-M_PI_2); // 逆时针旋转 } }
可以看出,其实就是将cameraView旋转成正常方向。
———————–2016-4-6————————–
最近发现上面的解决方式仍然有问题:现在imagePicker打开相机时,镜头是正常的,但是旋转pad,镜头又再次旋转90°。
增加了一段代码,完善后的地址:http://blog.csdn.net/u010731949/article/details/51075337
思路是:监听设备旋转通知,当设备旋转监听到pad旋转到UIDeviceOrientationPortraitUpsideDown、或者UIDeviceOrientationPortrait时,恢复imagePicker到原来的镜头方向_imagePicker.cameraViewTransform = CGAffineTransformMakeRotation(0); 当然如果默认应用是竖屏的,那么相应的对旋转到UIDeviceOrientationLandScape方向进行处理
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientChange:) name:UIDeviceOrientationDidChangeNotification object:nil]; - (void)orientChange:(NSNotification *)noti { NSDictionary *notiDict = [noti userInfo]; UIDeviceOrientation orient = [UIDevice currentDevice].orientation; switch (orient) { case UIDeviceOrientationPortraitUpsideDown: case UIDeviceOrientationPortrait: _imagePicker.cameraViewTransform = CGAffineTransformMakeRotation(0); break; default: break; }
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- C#实现将网页保存成图片的网页拍照功能
- android 拍照和上传的实现代码
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法
- js判断客户端是iOS还是Android等移动终端的方法
- iOS应用中UISearchDisplayController搜索效果的用法
- IOS开发环境windows化攻略
- iOS应用中UITableView左滑自定义选项及批量删除的实现
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- Android 开发随手笔记之使用摄像头拍照
- .net平台推送ios消息的实现方法
- Android拍照得到全尺寸图片并进行压缩