一直遇到这个问题,今天最终找到了解决方法.

在我们的项目中常常遇到横竖屏切换,而又有某个特定的界面必须是特定的显示方式(横屏或竖屏).这就须要例如以下的处理了.

强制转成横屏:if ([[UIDevice currentDevice] respondsToSelector:@selector(setOrientation:)]) {SEL selector = NSSelectorFromString(@"setOrientation:");NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[UIDevice instanceMethodSignatureForSelector:selector]];[invocation setSelector:selector];[invocation setTarget:[UIDevice currentDevice]];int val = UIInterfaceOrientationLandscapeRight;[invocation setArgument:&val atIndex:2];[invocation invoke];
}

方法二: 通过推断状态栏来设置视图的transform属性。

- (void)deviceOrientationDidChange: (NSNotification *)notification
{UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];CGFloat startRotation = [[self valueForKeyPath:@"layer.transform.rotation.z"] floatValue];CGAffineTransform rotation;switch (interfaceOrientation) {case UIInterfaceOrientationLandscapeLeft:rotation = CGAffineTransformMakeRotation(-startRotation + M_PI * 270.0 / 180.0);break;case UIInterfaceOrientationLandscapeRight:rotation = CGAffineTransformMakeRotation(-startRotation + M_PI * 90.0 / 180.0);break;case UIInterfaceOrientationPortraitUpsideDown:rotation = CGAffineTransformMakeRotation(-startRotation + M_PI * 180.0 / 180.0);break;default:rotation = CGAffineTransformMakeRotation(-startRotation + 0.0);break;}view.transform = rotation;
}

说明一下:假设实现了下边的两个方法。你的应用程序在初始化的时候有多少个controller就会走多少次下边两个方法。showldAutorotate这种方法是再你即将旋转屏幕的时候,就会再次调用,仅仅要在这里推断好YES或者NO就好了。

在你须要的时候通过shouldAutorot这个变量打开,不须要的时候关闭就能够了。有什么不明确的,能够增加上边的QQ群。里边问我。

-(BOOL)shouldAutorotate    //是否支持旋转。假设为NO,则下边的方法就不会调用,假设为YES,才会调用
{if (!shouldAutorot) {return NO;}else{return YES;}
}-(NSUInteger)supportedInterfaceOrientations
{return UIInterfaceOrientationMaskAllButUpsideDown;
}

转载于:https://www.cnblogs.com/cxchanpin/p/6955823.html

小胖说事30------iOS 强制转成横屏的方式相关推荐

  1. Flutter android及ios强制竖屏/横屏

    Flutter android及ios强制竖屏/横屏 在main.dart内设置即可 在main.dart内设置即可 void main(){WidgetsFlutterBinding.ensureI ...

  2. iOS强制切换横屏、竖屏

    切换横竖屏最直接的方式是调用device的setOrientation方法.但是从sdk3.0以后,这个方法转为似有API,如果要上AppStore的话,要慎用! if ([[UIDevice cur ...

  3. [iOS]关于iOS中界面视图横屏/竖屏切换的问题总结

    最近在项目中有个这样的需求:整个APP中界面也竖屏为主,且不能自动横竖屏切换,个别页面可以根据手机的方向横竖屏切换;其实实现起来也并不难,关于视图是否能旋转主要还是有没有设置支持,在工程的Genera ...

  4. 打印不同对象的字节表示 ( 对int*强制转换成unsigned char*的理解 )

    此文章参考<深入理解计算机系统>P31. 先看如下代码:  12345的十六进制表示为:0x00003039 1 #include <stdio.h> 2 3 int main ...

  5. C语言Socket编程为什么要将sockaddr_in强制转换成sockaddr?

    在阅读尹圣雨<TCP/IP网络编程>(C语言示例)的时候,看到将sockaddr_in类型的struct的指针强制转换成了sockaddr类型的指针. 比如hello_client.c: ...

  6. c语言char数字转int补位,关于char强制转换成int到底是用0还是用1补位的猜想与检验...

    关于char强制转换成int到底是用0还是用1补位的猜想与检验 最近学C语言发现char强制转换时值会完全不同,而且变化很大,于是决定写代码测试一下. 先检验一下char型的-3和3在内存中分别怎么表 ...

  7. php强制转成字符串,php怎么强制转成字符串

    php强制转成字符串的方法:首先创建一个PHP示例文件:然后定义一个变量:最后通过PHP中的string方法强制转换成字符串即可. 本文操作环境:windows7系统.PHP7.1版,DELL G3电 ...

  8. android 布局可大可小,UI设计教程之:ios与android ui适配(将IOS UI转换成Android经验畅谈)...

    内容提要:这是UI设计系列教程之ios与android ui适配经验畅谈.文章作者介绍了自己将IOS UI转换成Android经验,包括:不要直接转换.了解单位和组件缩放格式.屏幕尺寸DP和像素的换算 ...

  9. python 强制转换成字符_Python笔记(三)

    来源网络 「往期回顾」 Python笔记(一) Python笔记(二) 「本期内容」 1.用户输入与while循环 2.函数 3.模块 哈喽,各位小伙伴们,大家上午好!话说,你们知道今天是什么日子么? ...

最新文章

  1. MySQL之pymysql模块
  2. php mysql execute语法_PHP PDOStatement::execute讲解
  3. 新书 | 经典教材应用随机过程出第12版啦!
  4. Android locksettings/gatekeeper代码导读
  5. Linux:入门基础
  6. rust布料怎么弄_布料“难弄”,你需要从这六方面解决!
  7. 相机矩阵(Camera Matrix)
  8. 复习JavaFile类_递归_综合案例
  9. Jupyter notebook中怎么添加Pytorch运行环境
  10. django 1.8 官方文档翻译:9-1-4 格式本地化
  11. 【OpenCV学习笔记】【函数学习】六(cvCreateImage()函数)
  12. 价值函数与贝尔曼方程
  13. Linux Bridge
  14. 《7天精通直播带货》运营型主播成长型,提升直播能力与技巧
  15. golang json 格式化输出对象
  16. 8.23 正点原子领航者V1开发板学习之EEPROM
  17. 【Neo4j】SOLVED:java.lang.RuntimeException: Error starting Neo4j database server
  18. natapp自动获取免费的动态端口域名
  19. Dubbo原理简单分析
  20. IT行业的各岗位职责

热门文章

  1. 如何将远程服务器MYSQL数据库导出导入
  2. 正确地组织python项目的结构
  3. virus.win32.xorer病毒
  4. 静态库.a和动态库.so的制作
  5. excel html modify,Modify excel cell
  6. 三坐标测量圆直径_多台三坐标测量机联动测量方法的研究
  7. EPERM: operation not permitted, Please run SwitchHosts
  8. BTC36 CLUB国际基金拟向美国SEC提交那斯达克股票上市申请
  9. dHedge DAO和一些顶级基金向基金管理者投资14.5万sUSD
  10. 自动化审批决策树助你面试更上一层楼