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 ...
随机推荐
- c 语言简单计算器源码
// main.c // 计算器 // Created by qianfeng on 14-7-15. // Copyright (c) 2014年 ___FGY___. All rights ...
- linux和windows的文件互传
Linux →→→Windows 1.使用secureCRT:下载文件只需在shell终端仿真器中输入命令"sz 文件名",即可利用Zmodem将文件下载到本地某目录下. 2. s ...
- 项目管理软件伙伴https://www.huobanyun.cn/
现在项目管理软件市面上很多,但能够完全适合每家公司需求的比较难找,因为众口难调,每家公司都有自己的特殊情况,所以,建议考虑下有比较齐全的基础功能的标准化软件产品,同时又在项目管理开发能力上比较突出. ...
- Oracle不能导入空表解决方案
C:\Users\Administrator>sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on 星期日 8月 17 1 ...
- Qt之美(一):d指针/p指针详解
Translated by mznewfacer 2011.11.16 首先,看了Xizhi Zhu 的这篇Qt之美(一):D指针/私有实现,对于很多批评不美的同路人,暂且不去评论,只是想支持 ...
- 基于Visual C++2013拆解世界五百强面试题--题11-查找数字出现次数
在排序数组中,找出给定数字出现的次数比如{ 1, 2, 2, 2, 3}中2的出现次数是3次 我们可使用二分查找发,分别查找出2最先出现的位置和最后出现的位置相减即可. 下面是上代码: #includ ...
- Android GPS应用:动态获取位置信息
在上文中,介绍了GPS概念及Android开发GPS应用涉及到的常用类和方法.在本文中,开发一个小应用,实时获取定位信息,包括用户所在的纬度.经度.高度.方向.移动速度等.代码如下: Activity ...
- MYSQL大小写(由于数据由windows迁移到Linux导致)
今日从sqlserver上迁移了一个数据库到Linux的MySQL中,迁移成功了,但是应用却跑不通,查看日志发现,提示找不到表,我注意到,表名都是存在大小写的,而MySQL中的表名都是小写的.这提醒了 ...
- 远程唤醒、WOL、Magic_Packet
背景:很多人熟悉远程桌面并经常地利用它所带来的方便,但是前提是服务器(远程电脑)必须是处于开机状态.对于机房里有专人管理的服务器,这点不成问题,但如果是放在家里的电脑,要让它7*24地开机似乎就不好办 ...
- ADO.NET基础笔记
ADO.NET 程序要和数据库交互要通过ADO.NET进行,通过ADO.Net就能在程序中执行SQL了. ADO.Net中提供了对各种不同的数据库的统一操作接口. 连接字符串: 程序通过连接字符串指定 ...