博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS横竖屏
阅读量:6307 次
发布时间:2019-06-22

本文共 2241 字,大约阅读时间需要 7 分钟。

现在开发的APP大部分界面是竖屏的,只有视频播放的界面和webview阅读文字的界面是可以横屏操作的。

那么就进行如下处理:

  1、首先确保APP支持横屏旋转

  2、我的App里面都是走UINavigationController进行界面push切换的,所以首先创建一个UINavigationController的子类,并设定允许转屏:  

  

#pragma mark 转屏方法重写-(UIInterfaceOrientationMask)supportedInterfaceOrientations{    return [self.viewControllers.lastObject supportedInterfaceOrientations];}-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{    return [self.viewControllers.lastObject preferredInterfaceOrientationForPresentation];}-(BOOL)shouldAutorotate{    return self.visibleViewController.shouldAutorotate;}

在不想转屏切换的ViewController上重写以下方法:

  

#pragma mark 转屏方法 不允许转屏-(UIInterfaceOrientationMask)supportedInterfaceOrientations{    return UIInterfaceOrientationMaskPortrait ;}- (BOOL)shouldAutorotate{    return NO;}-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{    return UIInterfaceOrientationPortrait;}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{    return NO;}

在想转屏切换的ViewController上可以照这样重写(允许左右横屏以及竖屏):

  

- (BOOL)shouldAutorotate {    return YES;}-(UIInterfaceOrientationMask)supportedInterfaceOrientations{    return UIInterfaceOrientationMaskAll;}- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{    return UIInterfaceOrientationPortrait;}- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{    return YES;}

另外,在ViewController中对于转屏事件可以参见下面的方法进行捕获:

  

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id
)coordinator{ [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; [coordinator animateAlongsideTransition:^(id
context) { //计算旋转之后的宽度并赋值 CGSize screen = [UIScreen mainScreen].bounds.size; //界面处理逻辑 self.lineChartView.frame = CGRectMake(0, 30, screen.width, 200.0); //动画播放完成之后 if(screen.width > screen.height){ NSLog(@"横屏"); }else{ NSLog(@"竖屏"); } } completion:^(id
context) { NSLog(@"动画播放完之后处理"); }];}

区分当前屏幕是否为横竖屏的状态,其实通过判断当前屏幕的宽高来决定是不是横屏或者竖屏:

竖屏时:宽<高

横屏时:宽>高

以上在IOS8、9中测试通过

转载于:https://www.cnblogs.com/jw-blog/p/5420165.html

你可能感兴趣的文章
剑指offer第二版-1.赋值运算符函数
查看>>
javascript 对象
查看>>
Android学习笔记——文件路径(/mnt/sdcard/...)、Uri(content://media/external/...)学习
查看>>
Echart:前端很好的数据图表展现工具+demo
查看>>
CATransform3D iOS动画特效详解
查看>>
Linux VNC黑屏(转)
查看>>
Java反射简介
查看>>
react脚手架应用以及iview安装
查看>>
shell学习之用户管理和文件属性
查看>>
day8--socket网络编程进阶
查看>>
node mysql模块写入中文字符时的乱码问题
查看>>
仍需"敬请期待"的微信沃卡
查看>>
分析Ajax爬取今日头条街拍美图
查看>>
内存分布简视图
查看>>
POJ 2918 求解数独
查看>>
如何学习虚拟现实技术vr? vr初级入门教程开始
查看>>
第4 章序列的应用
查看>>
Mysql explain
查看>>
初识闭包
查看>>
java tcp socket实例
查看>>