iOS8的屏幕旋转的问题
判断横竖屏。http://www.cocoachina.com/ask/questions/show/121301
//self.cameraView是相机view - (NSUInteger)supportedInterfaceOrientations { UIInterfaceOrientation e = [[UIApplication sharedApplication] statusBarOrientation]; if (e == UIInterfaceOrientationLandscapeLeft) { if (self.cameraView) { self.cameraView.transform = CGAffineTransformMakeRotation((- * M_PI) / 180.0f); } }else if (e == UIInterfaceOrientationLandscapeRight) { if (self.cameraView) { self.cameraView.transform = CGAffineTransformMakeRotation(( * M_PI) / 180.0f); } } return (UIInterfaceOrientationMaskLandscape); } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //m_bScreen是bool 型,判断横竖屏。 if ([[[UIDevice currentDevice]systemVersion ]floatValue] >= 8.0) { BOOL m_bScreen = NO; UIInterfaceOrientation e = [[UIApplication sharedApplication] statusBarOrientation]; if (e == UIInterfaceOrientationLandscapeLeft) { m_bScreen = NO; }else if (e == UIInterfaceOrientationLandscapeRight) { m_bScreen = YES; } if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) { NSNumber *num = [[NSNumber alloc] initWithInt:(m_bScreen?UIInterfaceOrientationLandscapeRight:UIInterfaceOrientationLandscapeLeft)]; [[UIDevice currentDevice] performSelector:@selector(setOrientation:) withObject:(id)num]; [UIViewController attemptRotationToDeviceOrientation];//这行代码是关键 } SEL selector=NSSelectorFromString(@"setOrientation:"); NSInvocation *invocation =[NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]]; [invocation setSelector:selector]; [invocation setTarget:[UIDevice currentDevice]]; int val =m_bScreen?UIInterfaceOrientationLandscapeRight:UIInterfaceOrientationLandscapeLeft; [invocation setArgument:&val atIndex:]; [invocation invoke]; } }
获取相机view的方法:
#pragma mark UINavigationControllerDelegate - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated{ if ([[[UIDevice currentDevice]systemVersion ]floatValue] >= 8.0) { UIView *PLCameraView=[self findView:viewController.view withName:@"PLImagePickerCameraView"]; NSArray *svarray = [PLCameraView subviews]; self.imagePickerController.cameraView = svarray[0]; for (int i = ; i < svarray.count; i++) { //i: 0 相机 1 拍照界面 2 重拍界面 if (i == ) { NSArray *arr = [svarray[] subviews]; for (int i = ; i < arr.count; i++) { if (i == ) { //i: 1 前置摄像头切换 [[arr objectAtIndex:i] setAlpha:0.0f]; } } } } }else if ([[[UIDevice currentDevice]systemVersion ]floatValue] >= 7.0) { UIView *PLCameraView=[self findView:viewController.view withName:@"PLCameraView"]; NSArray *svarray = [PLCameraView subviews]; for (int i = ; i < svarray.count; i++) { //i: 0 相机 1 拍照界面 2 重拍界面 if (i == ) { NSArray *arr = [svarray[] subviews]; for (int i = ; i < arr.count; i++) { if (i == ) { //i: 1 前置摄像头切换 [[arr objectAtIndex:i] setAlpha:0.0f]; } } } } } } #pragma mark get/show the UIView we want //Find the view we want in camera structure. -(UIView *)findView:(UIView *)aView withName:(NSString *)name{ Class cl = [aView class]; NSString *desc = [cl description]; if ([name isEqualToString:desc]) return aView; for (NSUInteger i = ; i < [aView.subviews count]; i++) { UIView *subView = [aView.subviews objectAtIndex:i]; subView = [self findView:subView withName:name]; if (subView) return subView; } return nil; }
iOS8的屏幕旋转的问题的更多相关文章
- ios实现屏幕旋转的方法
1.屏蔽AppDelegate下面的屏幕旋转方法 #pragma mark - 屏幕旋转的 //- (UIInterfaceOrientationMask)application:(UIApplica ...
- iOS屏幕旋转 浅析
一.两种orientation 了解屏幕旋转首先需要区分两种orientation 1.device orientation 设备的物理方向,由类型UIDeviceOrientation表示,当前设备 ...
- UI基础:视图控制器.屏幕旋转.MVC 分类: iOS学习-UI 2015-07-02 22:21 62人阅读 评论(0) 收藏
UIViewController 视图控制器,继承自UIResponder,作用:管理视图并且响应事件 功能: 1.分担APPdelegate的工作 2.实现模块独立,能提高复用性 创建UIViewC ...
- Runtime解决屏幕旋转问题
前言 大家或许在iOS程序开发中经常遇到屏幕旋转问题,比如说希望指定的页面进行不同的屏幕旋转,但由于系统提供的方法是导航控制器的全局方法,无法随意的达到这种需求.一般的解决方案是继承UINavrgat ...
- 【Android】[转] Android屏幕旋转使用OrientationEventListener的监听
说明 遇到一个奇葩的问题,我在使用onConfigChanged拦截屏幕的横竖屏旋转时,发现直接进行180度的横屏/竖屏转换居然没有反应!查找原因发现仅对landscape或者portrait状态有用 ...
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
的最佳方案 标签: Android屏幕旋转AsyncTaskProgressDialog 2014-07-19 09:25 39227人阅读 评论(46) 收藏 举报 分类: [android 进阶之 ...
- iOS实现屏幕旋转
iOS实现屏幕旋转有两种方式 1. 应用本身支持 2. 手动旋转UIView (这种方式我没找到旋转 系统控件的方法 如:键盘.导航.UIAlertView) 如果你只是要把竖屏的播放器,做成支持横屏 ...
- Recovery和Charger模式下屏幕旋转180度
转自:http://www.etwiki.cn/android/1267.html 如何让Recovery (系统固件升级),charger(关机充电动画)时屏幕旋转180度 解决方法: 1.在boo ...
- View页面内容的旋转,在某些情况下可替代屏幕旋转使用
这个是在做小秘书的体重曲线图的时候用到的,横排的时候可以多显示些内容,可是由于很多未知的冲突导至屏幕旋转起来非常麻烦,可用用旋转页面的内容来达到旋转屏幕的效果. 代码如下: //旋转90度 CGAff ...
随机推荐
- IOS 定位服务与地图的应用开发
1.定位服务 现在的移动设备很多都提供定位服务,IOS设备提供3种不同定位途径: (1)WiFi定位,通过查询一个WiFi路由器的地理位置的信息,比较省电:IPhone,IPod touch和IPad ...
- objectiveC获取本地时间。
NSDate * date = [NSCalendarDate date]; NSLog(@"%@", date); 日历在IOS里报错,,. NSDateFormatter *f ...
- web乱码问题
String data = "不见青山"; ServletOutputStream sos = response.getOutputStream(); byte b[] = dat ...
- Oracle Primavera P6 R84单机版安装教程
本教程用于指导Oracle Primavera P6 R84版本的单机版安装过程.P6 R84版本于2014年9月30日发布.其功能较之前版本有较大提升.单机版的安装方式也发生了很大的变化.P6 R8 ...
- Qt的Model/View Framework解析(数据是从真正的“肉(raw)”里取得,Model提供肉,所以读写文件、操作数据库、网络通讯等一系列与数据打交道的工作就在model中做了)
最近在看Qt的Model/View Framework,在网上搜了搜,好像中文的除了几篇翻译没有什么有价值的文章.E文的除了Qt的官方介绍,其它文章也很少.看到一个老外在blog中写道Model/Vi ...
- 增强Delphi.RemObject.DataAbstract的脚本功能:多数据库同时操作
我们知道,通过Schema,一个DataAbstracService对应一个数据库:一个服务器可以包含多个DataAbstracService,从而实现对多个数据库的操作.通过事件处理我们可以在一个D ...
- java程序获得SqlServer数据表的表结构
/** * 取得一张表的结构信息 * 使用DatabaseMetaData与ResultSetMetaData结合的方式获取全部属性 * @param conn 数据连接 * @p ...
- Objective-c 数据类型
这里列出Objective-c中独有数据类型: 一.字符串 在Objective-c中,字符串常量是由@和一对从引号括起的字符串序列.比如:@"China".@"obje ...
- 基于表单的身份验证(FBA)
https://technet.microsoft.com/zh-cn/library/ee806890(office.15).aspx http://www.tuicool.com/articles ...
- 【转】emulator: ERROR: Could not load OpenGLES emulation library: lib64OpenglRender.so
[转]emulator: ERROR: Could not load OpenGLES emulation library: lib64OpenglRender.so ./emulator64-arm ...