华山论剑之iOS强制横竖屏的切换

在iOS软件开发中,一般APP可能是需要全部横屏或者竖屏,但是有的时候会遇到这样的问题,就是我们的其中一个或者几个页面需要横屏或者竖屏,其他的界面方面不发生改变,那么,我们该如何实现呢?前几天我就发现了这个问题,但是网上的资料大多都是陈旧的老古董了,多数是iOS4.0版本左右的方法,小数是iOS6.0左右的,现在iOS已经更新到9.3,所以以前好多方法都不能使用了.下面我就说一下对如何使用纯代码对部分页面进行横竖屏的切换.


一、功能实现的必备条件


  • 项目工程中必须设置支持其他方向,不能只支持竖屏或者横屏.如图所示
  • 有个自定义的UINavigationController的子类,里面需要实现如下三个方法
-(BOOL)shouldAutorotate
{
    
    return YES;}

-(NSUInteger)supportedInterfaceOrientations

{
    return [self.viewControllers.lastObject
            
            supportedInterfaceOrientations];
}

-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
    
    return [self.viewControllers.lastObject
            preferredInterfaceOrientationForPresentation];
}

  • 需要做横竖屏切换的界面实现对应的三个方法,和自定义的UINavigationController的子类所需要实现的方法一样,但是我们要把转换方向做对应的改变.
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{

    [self dismissViewControllerAnimated:YES completion:nil];


}


- (BOOL)shouldAutorotate

{
    
    return NO;
    
}


-(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation

{
    
    return UIInterfaceOrientationLandscapeRight;
    
}


-(NSUInteger)supportedInterfaceOrientations

{
    
    return UIInterfaceOrientationMaskLandscapeRight;
    
}

  • (重要) 这一个也是最关键,push页面的时候必须要使用 presentViewController:UIViewController animated:(BOOL)completion:(void)completion ,当然了,pop页面的时候就要用dismissViewControllerAnimated了.
//push页面的时候
    [self.navigationController presentViewController:[[newVC alloc]init] animated:YES completion:nil];

//pop页面的时候
    [self dismissViewControllerAnimated:YES completion:nil];


因为涉及到多个控制器,所以代码就不在这里面写了,因为写了多乱糟糟的,所以做了个Demo,下面给大家一个自己Demo的链接,大家可以下载查看,谢谢大家.

-----> 点击下载横竖屏强制切换的Demo

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,241评论 4 61
  • 1. 吉田穗波的《吉田医生哈佛求学记》真的算是一部记,记录了一位四个孩子的妈妈从最初产生哈佛求学想法到实施一直到最...
    长弓心悦阅读 557评论 0 0
  • 雨从昨日开始一直的下着,淅沥的小雨朦胧了初夏,雨滴的滋润让各种植被如沐甘霖。绿色的水润珠翠,红的杏花尽情绽放着属于...
    雪落重阳阅读 338评论 4 5
  • 如果你是邪恶的,那我又何必提醒你只是个孩子。 ——《告白》 今天在路上看完了湊佳苗的《告白》,不知道是否叫做“...
    邹邹的太阳花们阅读 310评论 0 1
  • 2016/7/3 夜暮低垂 污浊的是空气 还有那被酒精微醺的思绪 深情从不曾告白 却只做着欲望的表达 轻触的唇 是...
    牧心3320阅读 151评论 0 0